Matlab 使用第二个Y轴更改打印顺序

Matlab 使用第二个Y轴更改打印顺序,matlab,plot,Matlab,Plot,在两个不同的y轴上打印时,更改打印顺序有问题。我希望左轴上的图位于右Y轴上的图的前面。我已经修改了调用绘图函数的顺序,如下所示。此外,我查看了这篇文章: 但被接受的答案对我没有帮助。我想问题是我只改变了一个轴上的顺序。。另外,命令uistack只会导致一个错误,原因我猜也是一样的。非常感谢您的帮助 我的代码: V=horzcat(-2:0.1:2)、(2:-0.1:-2)); t=(0:0.01234568:1.01); T=(0:25:2025); 图(30); YY轴右 绘图(t,V,'线

在两个不同的y轴上打印时,更改打印顺序有问题。我希望左轴上的图位于右Y轴上的图的前面。我已经修改了调用绘图函数的顺序,如下所示。此外,我查看了这篇文章:

但被接受的答案对我没有帮助。我想问题是我只改变了一个轴上的顺序。。另外,命令uistack只会导致一个错误,原因我猜也是一样的。非常感谢您的帮助

我的代码:

V=horzcat(-2:0.1:2)、(2:-0.1:-2));
t=(0:0.01234568:1.01);
T=(0:25:2025);
图(30);
YY轴右
绘图(t,V,'线宽',3);持有全部;
xlabel(‘时间’);ylabel(‘电压/V’);
设置(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);
设置(ax.YAxis,'MinorTick','on')
设置(ax.YAxis,'MinorTickValues',(-2:0.25:2))
YY轴左
顶部=绘图(t,t,'线宽',3);持有全部;
xlabel(‘时间’);ylabel(‘温度/K’);
ax=gca;
%ax.YAxis.MinorTick='on';
%ax.YAxis.MinorTickValues=(250:50:650);
设置(ax.YAxis,'MinorTick','on')
集合(ax.YAxis,'MinorTickValues',(250:50:650))
chH=get(gca,“儿童”);
集合(gca,'Children',[chH(end);chH(1:end-1)];
uistack(顶部,“顶部”);
现在的样子:

正如你所看到的,橙色线在蓝色线的前面,但是我希望它在另一个方向


非常感谢您的帮助。

这是因为
get(gca,'Children')
只返回一行对象!这是蓝色的。所以这段代码实际上什么都不做。 但是我相信问题来自于
yyaxis
方法。根据MATLAB:

提示

  • Axis对象的Children属性仅包含活动侧的子对象。要访问两侧的所有子项,请使用
    allchild
    功能
轴属性
与y轴相关的轴特性有两个值。但是,MATLAB®仅提供活动侧的值。例如,如果左侧处于活动状态,则axis对象的YLim特性包含左侧y轴的限制。但是,如果右侧处于活动状态,则YLim特性包含右侧y轴的限制


我从上面的描述中得到的是,当您调用
yyaxis
时,会创建另一个axes对象,并将其放置在原始对象的上方。但是它们是内部耦合的,因此您可以在再次调用
yyaxis
后激活它们,从而访问它们的属性,包括它们的独立子级列表。

我想问“第二个问题”作为另一个问题-这是第二个问题,显然不相关!好吧,我改了:)好吧,但这对我改变顺序有什么帮助?我的意思是,只要他们的孩子名单是分开的,我就不能改变顺序,对吗?所以我必须以某种方式改变轴的顺序吗?@Nils你不能!右轴始终淹没在左轴上方。我也改变了绘图的顺序,但它不起作用。你所能做的就是改变轴本身。嗯,好吧,那么你基本上是说这不可能做到,对吗?@Nils更准确地说,我所说的是我没有做到。问题是,这些线对象不属于同一父对象。所以改变他们的顺序是毫无意义的。我们能做的就是改变他们父母的顺序。但是没有两个不同的轴对象!嗯,好吧,我明白。。无论如何谢谢你的帮助。。不过,我感到惊讶的是,似乎还没有其他人偶然发现这个问题。