2016-12-23 9 views
0

Я пытаюсь использовать plotyy в октаве, но он показывает только половину x-меток. Я думаю, что я просто не понимаю, как правильно использовать xtick и xticklables.Octave plotyy показывает только половину x-lables

xAxis = [800 900 1000 1100 1200 1300 1400 1500 1600 1700]; 

figure(1, 'Position', [80, 80, 1680, 1050]); 
[ax,h1,h2] = plotyy(xAxis, scale1(:,2), xAxis, scale2(:,2)); 
set(ax,"xtick", [1:10]); 
set(ax, "xticklabel", [num2str(xAxis(1)), num2str(xAxis(2)), num2str(xAxis(3)), num2str(xAxis(4)), num2str(xAxis(5)), num2str(xAxis(6)), num2str(xAxis(7)), num2str(xAxis(8)), num2str(xAxis(9)), num2str(xAxis(10))]); 
axis on 
set(ax, "linewidth", 4, "fontsize", 12) 
set(h1,'linewidth',3) 
set(h2,'linewidth',3) 
grid on 
% Add additional text to the figure 

ось Х должна показать значение от 800 до 1700 с шагом 100. Но это делает шаги 200, поэтому каждый второй ярлык отсутствует.

Кто-нибудь знает, как показать все ярлыки?

ответ

0

Вы должны установить столько xticks, как xticklabels, так что вы можете сделать:

set(gca,'xtick', 0:0.1:1, 'xticklabel', xAxis) 

, но если вы спросите меня, поставив числовые метки, которые не соответствуют фактическим значениям оси х рецепт катастрофы.

EDIT на основе вашего комментария, похоже, вы просто хотите указать больше тиков в существующем диапазоне. Вот пример. Обратите внимание, что ax - это массив. Вам нужно указать только галочки для одной из двух осей.

xAxis = [800 900 1000 1100 1200 1300 1400 1500 1600 1700]; 
scale1 = [xAxis.', xAxis.']; scale2 = scale1.^0.5; % example data 
[ax,h1,h2] = plotyy(xAxis, scale1(:,2), xAxis, scale2(:,2)); 
set(ax(1),"xtick", xAxis); 
set(ax(2),"xtick", []); 
+0

К сожалению, эта линия не делает этого. У меня все еще есть только половина отображаемых x-меток. То же самое, когда я не устанавливаю xlabels вообще. И я не хочу использовать метки, которые не соответствуют фактическим значениям. Я просто хочу, чтобы октава отображала все метки, а не половину из них. – Oronar

+0

Забудьте о ярлыках. Ярлыки полезны, если вы хотите заменить «1 2 3» на что-то вроде «Mon Tue Wed». То, о чем вы просите, - это указать, где именно отображать xticks в этом диапазоне. Я отредактировал свой ответ, чтобы указать на это. –

+0

Да, может быть, мой вопрос был плохо сформулирован. Но код из вашего редактирования doen't работает, как я хочу. Ось x по-прежнему показывает только каждое второе значение x. см. Https://1drv.ms/i/s!An9UcbbB3nvyyUKlOz9_Sbx28sqg – Oronar