我已经在其上绘制了一条有多行的图形,我注意到绘图的线条在它们为零时与x轴重叠。有没有办法让我可以基本上让x轴绘制在顶部,而不是线条?
这是一个做同样事情的MWE(由于我的数据集非常大,我没有把我的确切代码放在一起)。
xdata=1:1:10;
ydata=[1;0.8;0.6;0.4;0.2;0;0;0;0;0];
line(xdata,ydata)
在我绘制线条(在我的情况下每个绘图多个)后,我用轴做了各种其他事情,所以我得到了我需要的东西(包括添加一组辅助轴)。对于x轴是否绘制在线的顶部,似乎没有任何区别。
我确实在网上搜索过但无法找到与此有关的内容。
答案 0 :(得分:4)
Luis给出的答案是一个很好的解决方法,但解决此问题的官方方法是使用轴对象的layer
属性,请参阅manual。要在您执行的数据上绘制轴
set(gca,'Layer','top')
要自动为您的所有图表执行此操作,您可以在startup.m
中添加以下行:
set(0,'DefaultAxesLayer','top')
这种答案你自己没有弥补,我只是在comp.soft-sys.matlab many years ago上或多或少地提出同样的问题后才发现这个伎俩。另请参阅this SO question。
答案 1 :(得分:3)
绘制完所有线后,在x轴上绘制一条与轴颜色相同的线:
hold on
a = axis; %// gives xmin xmax ymin ymax
cx = get(gca,'Xcolor'); %// color of x axis
plot([a(1) a(2)], [a(3) a(3)], 'color', cx)
如果线条也与y轴重叠,并且您还希望该轴显示在顶部,请添加以下内容:
cy = get(gca,'Ycolor'); %// color of y axis
plot([a(1) a(1)], [a(3) a(4)], 'color', cy)