将yyaxis的XTick设置为仅具有整数刻度



我有一个使用yyaxis的双y轴图。我想将XTick设置为只有整数值,例如1、2、3、4、5、6,而不是1、1.5、2、2.5、3、3.5、4、4.5、5、5.5、6。

使用普通的plot,我可以使用:

ax = gca;
ax.XTick = unique(round(ax.XTick));

实现这一目标。

yyaxis图似乎并非如此。

请帮忙!


更新:这里有一个MWE来说明我的问题:

figure('Position', get(0, 'Screensize'));
max_iter = 100;
A_history = nan(1,max_iter); B_history = nan(1,max_iter);
for iter = 1 : max_iter
yyaxis left;
A_history(iter) = randn(1);
plot(A_history(1:iter), '-ob', 'LineWidth', 0.9, 'MarkerSize', 4.5, 'MarkerFaceColor', 'b');
ylabel('first yaxis');
yyaxis right;
B_history(iter) = randn(1);
plot(B_history(1:iter), '-or', 'LineWidth', 0.6, 'MarkerSize', 3, 'MarkerFaceColor', 'r');
ylabel('second yaxis');

%     ax = gca;
%     ax.XTick = unique(round(ax.XTick));
pause(1);
end

上面的代码将为第一次迭代创建0、0.1、0.2、0.3、0.4、…、1的xticks;例如,第二次迭代的xticks为1、1.1、1.2、1.3、1.4、…、2。我想要的是去掉xticks中的所有非整数值(例如,0.1、…、0.9、1.1、…、1.9(,只留下整数值(如,第一次迭代为0,1;第二次迭代为1,2(

我已经尝试添加注释的2行代码。但不幸的是,他们没有给我预期的结果。更糟糕的是,xticks会一直变成[0,1]。。。

希望这能让问题描述更清楚。

当您这样做时,它实际上是'XTickMode'属性,设置为'manual'

ax = gca;
ax.XTick = unique(round(ax.XTick));

您可以将其更改回'auto',以便在尝试仅保留唯一的四舍五入值之前对新的xticks进行评估。即

ax = gca;
ax.XTickMode= 'auto';
ax.XTick = unique(round(ax.XTick));

最新更新