2014-09-05 119 views
0

我试图在给定图中显示给定向量的值。我的代码是:在MatLab图中显示标记值

x = [0.1 0.2 -0.1 4.1 -2 1.5 -0.1]; 
plot(x) 
a = num2str(x(:)); 
b = cellstr(a); 
c = strtrim(b); 
text(x,y,c); 

它绘制了值,但它们散布在整个地方,并没有很好地坐在图形上的每个点旁边。

+2

如果您执行了'plot(x)',您的x坐标将成为您的数组的索引,并且您的y坐标将成为该索引处'x'的值。正如所写的那样,如果图中没有任何内容(不存在负值索引),则告诉MATLAB将文本置于负x值。 – excaza 2014-09-05 13:59:46

+0

那么,你真的试图运行代码?我可以告诉你,由于'y'没有被定义,所以代码没有运行。试着定义'x'和'y',如果文本仍然没有放在正确的位置,所以回来。 – patrik 2014-09-05 14:07:36

+0

所以,我需要创建一个向量'x'轴,值为'1'到'7',然后创建上面的向量为'y',然后'plot(x,y)',然后运行'text '功能? – user1574598 2014-09-05 14:35:50

回答

2

正如我在上面的评论中所说的,使用单个向量输入调用plot将向量的值视为y坐标,将它们的索引作为x坐标。您提供的x矢量包含负数,但您的plot调用只有一个矢量输入,因此图中将没有负x坐标(在MATLAB中没有负指数)。

假设你x向量所需y坐标,下面的例子将提供我猜你期望的行为:

y = [0.1 0.2 -0.1 4.1 -2 1.5 -0.1]; 
x = 1:1:length(y); 
plot(x,y) 
a = num2str(x(:)); 
b = cellstr(a); 
c = strtrim(b); 
h = text(x,y,c); 

哪里h为对象的数组处理,您可以使用用getset来查询和修改每个单独文本对象的properties(如大小,对齐等)。

+0

谢谢,本来会建议回答,所以我可以接受。现在好了:-) – user1574598 2014-09-05 21:36:38

+0

你不应该在y上调用num2str吗? – ensignr 2017-11-14 02:52:03