1

我有两组数据要绘制在同一张图上。

首先是直方图:

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() 无效吗?

4

1 回答 1

4

你应该检查一下doc hold

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

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

编辑:现在我注意到ax2在你的情况下应该是空的 - 也许只是尝试上面的;)

于 2013-09-25T10:57:14.277 回答