首页 > 解决方案 > 在两个 yaxes 上指定次要刻度

问题描述

我有两个不同的 yaxes 的情节,我试图在两者上设置 MinorTickValues。我可以在两个轴上打开它们,效果很好。但是,当我指定它们的位置时,它们会在另一个轴上消失。

V = horzcat((-2:0.1:2), (2:-0.1:-2));
t = (0:0.01234568:1.01);
T = (0:25:2025);

figure(30);   
yyaxis right
plot(t ,V, 'Linewidth',3); hold all;
xlabel('Time / s');ylabel('Voltage / V');
set(gca,'FontSize',fontsize, 'LineWidth',2,'TickLength',[0.025 0.025])
xticks([0., 0.25, 0.5, 0.75, 1]);
ylim([-2, 2]),
ax = gca;
ax.XAxis.MinorTick = 'on';
ax.XAxis.MinorTickValues = (0:0.05:1);
set(ax.YAxis, 'MinorTick', 'on')
set(ax.YAxis, 'MinorTickValues', (-2:0.25:2))
    
yyaxis left
top = plot(t ,T, 'Linewidth',3); hold all;
xlabel('Time / s');ylabel('Temperature / K');
ax = gca;
%ax.YAxis.MinorTick = 'on';
%ax.YAxis.MinorTickValues = (250:50:650);
set(ax.YAxis, 'MinorTick', 'on')
set(ax.YAxis, 'MinorTickValues', (250:50:650))
chH = get(gca,'Children');
set(gca,'Children',[chH(end);chH(1:end-1)]);
uistack(top, 'top');

现在的样子:

在此处输入图像描述

当在左轴上设置 MinorTickValues 时,右轴上的 MinorTicks 消失,反之亦然。

非常感谢任何帮助。

标签: matlabplot

解决方案


在 yyaxis 的文档中,它说“一个例外是 Axes 对象的 YAxis 属性包含两个标尺对象的数组(每个 y 轴一个)。” 所以你应该可以用 ax.YAxis(1), ax.YAxis(2) 改变刻度

fontsize = 10;

V = horzcat((-2:0.1:2), (2:-0.1:-2));
t = (0:0.01234568:1.01);
T = (0:25:2025);

figure(30);   
yyaxis right
plot(t ,V, 'Linewidth',3); hold all;
xlabel('Time / s');ylabel('Voltage / V');
set(gca,'FontSize',fontsize, 'LineWidth',2,'TickLength',[0.025 0.025])
xticks([0., 0.25, 0.5, 0.75, 1]);
ylim([-2, 2]),

yyaxis left
top = plot(t ,T, 'Linewidth',3); hold all;
xlabel('Time / s');ylabel('Temperature / K');
chH = get(gca,'Children');
set(gca,'Children',[chH(end);chH(1:end-1)]);
% uistack(top, 'top');

ax = gca;
ax.YAxis(2).MinorTick = 'on';
ax.YAxis(2).MinorTickValues = 0:0.05:1;
ax.YAxis(1).MinorTick = 'on';
ax.YAxis(1).MinorTickValues = 250:50:650;

推荐阅读