如何在图表中添加x轴线?(matlab)

16

我想在Matlab图中添加一条x轴线,使得在将图保存为jpg时,能够比较我的数据是否为正或负。有什么最好的方法可以实现这一点吗?我知道可以使用 line(),但似乎很繁琐,因为需要指定x和y的范围。是否有更简单的方法?


请参考 https://dev59.com/EXTYa4cB1Zd3GeqPycTe 中有关竖线的类似问题。 - Cris Luengo
可能是如何在MATLAB中绘制水平和垂直线?的重复问题。 - SecretAgentMan
6个回答

32

存在一个未记录的函数 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');

screenshot

好的一点是它内部实现了一个监听器来处理轴限制的变化(例如平移、缩放等)。因此,这些线看起来会延伸到无穷远。


看起来我的Matlab 7.0.1 R14 SP1版本在运行你的代码时出现了分段错误,并且我没有得到x轴线。 :( - O_O
2
为什么要踩我,你的 MATLAB 版本相当老了,而且似乎无法运行上述解决方案。另外,正如我之前提到的,这是一个未记录的功能。 - Amro
抱歉,我没想到会这样。我试图取消点赞,但结果却导致了反对票。这个操作并不直观... =/ 现在我无法做任何事情,因为答案被锁定,只有在编辑帖子后才能解锁,而我没有编辑权限。 - O_O
非常好的解决方案!正是我长期寻找的! - jrast
14
抱歉,该功能已在R2014b中删除(引入了新的HG2图形系统)。 - Amro

7

在创建图形后,您可以直接获得此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范围。

6

希望有类似于GNU R中的vlinehline命令,但我找不到比下面更简短的解决方案:

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

1
这是一个非常优雅的方法! - Anti Earth

6

1
自MATLAB R2018b以来,有yline用于此目的:
 yline(0)

y==0 处绘制一条水平线。


1
  1. 使用plot()命令或stem()命令绘制数据。将会打开一个图形窗口。
  2. 然后在图形窗口上,点击菜单栏中的[insert]命令,出现下拉菜单。
  3. 从该菜单中选择[line]命令,此时光标的形状将变为加号。
  4. 现在您可以在任何想要的位置绘制一条线,可以是水平的、垂直的或斜的。
  5. 您可以通过右键单击该线来更改线的属性,会弹出一个菜单,您可以选择所需的属性。
  6. 如果您想在线上添加一些刻度,则可以使用添加文本选项,并在任何您想要的位置放置文本。
  7. 如果您想为图像生成代码,请单击[file]菜单,然后单击[generatecode]选项,将会打开一个新的文本编辑器窗口,您可以保存此代码以供以后使用。祝您好运。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接