【问题标题】:Multiple axis: using plot vs. line多轴:使用绘图与线
【发布时间】:2013-09-25 10:49:02
【问题描述】:

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

首先是一个直方图:

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

【问题讨论】:

  • 一般来说,您可以通过显示可重现的问题来帮助人们回答您的问题(这样我们就可以复制粘贴代码)。在这种情况下,我们将不得不猜测 data1 的样子。如果您需要更多帮助或提出其他问题,请考虑添加以下内容:要查看会发生什么,请使用 data1 = rand(100,1)

标签: matlab plot


【解决方案1】:

您应该查看doc hold

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

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

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

【讨论】:

    猜你喜欢
    • 2023-03-15
    • 1970-01-01
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 2021-10-01
    • 2021-09-12
    相关资源
    最近更新 更多