【问题标题】:How to add a x-axis line to a figure? (matlab)如何在图形中添加 x 轴线? (matlab)
【发布时间】:2011-12-26 13:56:57
【问题描述】:

我想在 Matlab 图形中添加 0 处的 x 轴线,以便在将图形保存为 jpg 时比较我的数据以查看它是正数还是负数。做这个的最好方式是什么?我知道您可以使用line(),但这似乎很麻烦,因为您需要指定 x 和 y 范围。有没有更简单的方法?

【问题讨论】:

标签: matlab plot matlab-figure horizontal-line


【解决方案1】:

存在一个未记录的函数graph2d.constantline

plot(-2:5, (-2:5).^2-1)

%# vertical line
hx = graph2d.constantline(0, 'LineStyle',':', 'Color',[.7 .7 .7]);
changedependvar(hx,'x');

%# horizontal line
hy = graph2d.constantline(0, 'Color',[.7 .7 .7]);
changedependvar(hy,'y');

好消息是它在内部实现了轴限制的侦听器(句柄变化,如平移、缩放等)。所以这些线条似乎会延伸到无穷大。

【讨论】:

  • 看起来我的 Matlab 7.0.1 R14 SP1 版本在我运行您的代码时给我一个分段违规,并且我没有得到 x 轴线。 :(
  • 为什么要投反对票,你的 MATLAB 版本已经很老了,而且事实证明不能运行上述解决方案。另外,正如我所提到的,这是一个未记录的功能
  • 对不起,我不认为它会这样做。我试图撤消赞成票,但它反而导致了反对票。不是很直观.. =/ 现在我不能做任何事情,因为 ans 被锁定,直到帖子被编辑并且我没有编辑权限。
  • 非常好的解决方案!正是我一直在寻找的东西!
  • 更新:不幸的是,该功能在 R2014b(引入了新的 HG2 图形系统)中被删除。
【解决方案2】:

我不相信有更方便的内置方式。我使用来自 FileExchange 的 hline()vline(),它们的工作原理非常棒:

http://www.mathworks.com/matlabcentral/fileexchange/1039

【讨论】:

    【解决方案3】:

    您可以在创建图形后直接获取此 x 范围。它有点像这样:

    x=-2:5;
    y=x.^2-1;
    
    figure()
    plot(x,y);
    
    xlim = get(gca,'xlim');  %Get x range 
    hold on
    plot([xlim(1) xlim(2)],[0 0],'k')
    

    请注意,如果您在图中进行任何手动缩小,则可能需要重新绘制线条以覆盖整个新的 x 范围。

    【讨论】:

      【解决方案4】:

      像 GNU R 中的 vlinehline 命令会很棒,但我找不到比它更短的解决方案

      plot(1:10,sin(1:10));
      line(xlim,[0 0],'Color','r') 
      

      【讨论】:

      • 这是一个非常优雅的方法!
      【解决方案5】:
      1. 通过plot() 命令或stem() 绘制数据。将打开一个图形窗口。
      2. 然后在图形窗口中,单击
        中的[插入]命令 菜单栏,会出现一个下拉菜单。
      3. 从此菜单中单击 [line] 命令,现在是
        光标将变为加号。
      4. 现在您可以在任意位置画线,水平线或
        垂直或倾斜。
      5. 您可以通过右键单击
        来更改线的属性 行,将出现一个菜单,您可以从中选择您的愿望
        属性。
      6. 如果你想在线上有一些刻度,那么你可以使用 add 文本选项,并将文本放置在您想要的任何位置。
      7. 如果您想为您的人物提供代码,请单击 [文件] 菜单,然后单击 [generatecode] 选项,一个新的文本编辑器
        窗口将打开,您可以保存此代码以供进一步使用。祝你好运。

      【讨论】:

        【解决方案6】:

        由于 MATLAB R2018b 有 yline 用于此目的:

         yline(0)
        

        y==0处画一条水平线。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-06-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多