【问题标题】:Can't Remove y = 0 Line in Matlab无法在 Matlab 中删除 y = 0 行
【发布时间】:2015-10-11 21:24:53
【问题描述】:

编辑:我想通了,但没有看到将其标记为已回答的地方。感谢大家的建议!

几周前,我试图强制 MATLAB 为我正在制作的绘图显示 y = 0 行。它很容易搜索,但显然我把它自动化了。现在我找不到任何与这个新问题相似的东西。当我运行这段代码时:

plot(x,y_known,x,y_simulated);
legend('Simulated','This stupid line right here','Known')

我得到以下信息: 注意y = 0 处的行,它不在代码中。我真的不在乎,但这是图中的第二行,它破坏了我创造传奇的能力。即,如果图例条目只是:

legend('Simulated','Known')

那么传说会说已知值是绿色的,当然不是这样。

我真的不想为我将来绘制的每一行创建一个句柄,而宁愿摆脱这条线。谁能提供一些帮助,或者至少为我指明正确的方向?

edit:y = 0 线还根据提供给第一个绘图条目的任何内容更改其线属性。所以plot(x,y1,'--',x,y2); 使 y1 和 y = 0 都变成虚线,但 plot(x,y1,x,y2,'--'); 只会使第二行变成虚线

【问题讨论】:

  • 您绘制的任何内容都会发生这种情况,还是仅在您运行此特定代码时发生?如果是后者,则必须在此处的两行周围发布一些代码。
  • 我假设你在某处做一些hold。如果你创建一个新图形然后plot它呢?
  • h = plot(x,y_known,x,y_simulated); legend(h,'Simulated','Known') 就够了吗?
  • 它正在绘制我没有意识到的第二列(或者它甚至可以做到这一点)。只是更多的证据我需要停止在 matlab 中强制使用它并以矢量方式使用它。
  • 接受按钮是一个刻度线,应该显示在每个答案旁边。

标签: matlab plot axis legend figure


【解决方案1】:

作为绝对的最后手段(在未能找到线实际上如何到达那里之后),您可以做的是访问您的轴的 Children 属性和 delete 子项,这是您不想要的线.

类似的东西:

ch = get(gca,'Children');
delete(ch(2)); %// Where 2 should be replaced by the child index you're trying to delete.

【讨论】:

  • 我已经弄明白了,但知道这一点真是太好了。非常感谢!
【解决方案2】:

在代码的更早之前有两个错误,给变量 2 列而不是 1 列。我没有意识到 Matlab 会有所帮助并绘制两列(我一直明确告诉它绘制两列)。又一个人在使用 Matlab 时不考虑向量模式的例子!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多