多轴:使用绘图与线

时间:2013-09-25 10:49:02

标签: matlab plot

我想在同一个图表上绘制两组数据。

首先是直方图:

hist(data1);
ax1 = gca;

我设置下一组轴,y在另一侧

ax2 = axes('Position',get(ax1,'Position'),...
    'XAxisLocation','bottom',...
    'YAxisLocation','right',...
    'Color','none',...
    'XColor','k');

如果我使用line()来绘制我的数据:

line(data2a, data2b, 'Color', 'r', 'LineStyle', '-', 'Marker', '.', 'Parent', ax2);

但如果我使用plot(),直方图将被删除,并且两个轴都显示在左侧。

plot(ax2, data2a, data2b); 

有人可以弄清楚为什么第二轴对plot()无效?

1 个答案:

答案 0 :(得分:4)

您应该查看doc hold

MATLAB中的Axes具有'NextPlot'属性,指定在此轴上发出新绘图函数时要执行的操作。 'nextplot'的默认值为replace,这意味着在绘制任何新内容之前,将删除现有的绘图。 使用hold(ax, 'on')set(ax, 'nextplot', 'add'),您可以指定将新图添加到现有图中,而不是替换它们。

lineplot行为不同的原因是,高级函数(如plot)尊重此轴属性,而低级函数如linepatch和其他人没有。它们在任何情况下都被添加到轴中,并且不会删除现有的子项。

编辑: 现在我注意到ax2在你的情况下应该是空的 - 或者只是试试上面的内容;​​)