当值为零时,Matlab线图与轴重叠

时间:2014-02-28 11:30:13

标签: matlab plot line matlab-figure

我已经在其上绘制了一条有多行的图形,我注意到绘图的线条在它们为零时与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轴是否绘制在线的顶部,似乎没有任何区别。

我确实在网上搜索过但无法找到与此有关的内容。

2 个答案:

答案 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)