我想在同一个图表上绘制两组数据。
首先是直方图:
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()无效?
答案 0 :(得分:4)
您应该查看doc hold
。
MATLAB中的Axes具有'NextPlot'属性,指定在此轴上发出新绘图函数时要执行的操作。
'nextplot'的默认值为replace
,这意味着在绘制任何新内容之前,将删除现有的绘图。
使用hold(ax, 'on')
或set(ax, 'nextplot', 'add')
,您可以指定将新图添加到现有图中,而不是替换它们。
line
和plot
行为不同的原因是,高级函数(如plot
)尊重此轴属性,而低级函数如line
, patch
和其他人没有。它们在任何情况下都被添加到轴中,并且不会删除现有的子项。
编辑:
现在我注意到ax2
在你的情况下应该是空的 - 或者只是试试上面的内容;)