如何在图表上标注线条

2,614次浏览(过去30天)
哈罗德
哈罗德 2011年12月1日
评论道: 卡洛琳2022年11月27日20:59
我有一个程序,它要求变量k的值。一个函数将这些输入到一个方程中,并在图形上为每个k值显示一条线。我如何用k的值标记每条线。我遇到的问题是,k值是可变的,所以是在图形上显示的线的数量,所以我不知道如何做到这一点的值是馈送到函数。如果有任何帮助,我将不胜感激。谢谢你,斯科特

答案(8)

乍得格林
乍得格林 2014年8月10日
标签 可能有用。
3评论
卡洛琳
卡洛琳 2022年11月27日20:59
Bruh

登录评论。


Mael Pouget
Mael Pouget 2021年8月10日
我知道这是十年前的问题了,但是
情节(曲线,“DisplayName的”“传说的曲线名称”
%或
Ax = axes();
(ax,“上”);
I = 1:10
情节(我* (1:10),“DisplayName的”,[“曲线#”num2str(我)))
结束
(ax,“关闭”);
传奇();
对于像我这样在plot()调用中命名行时遇到这个问题的人来说。

迈克尔
迈克尔 2011年12月1日
一般的方法是使用legend函数,给它一个plot对象句柄的向量和一系列对应的字符串。例如,
图;持有
A1 = plot(x,y1);M1 =“曲线1”
A2 = plot(x,y2);M2 =“曲线2”
legend([a1,a2], [M1, M2]);
图例在plot对象a1和字符串M1之间建立连接,并使用此连接来生成图例。你必须在你的循环中做的是设计一种方法来生成ai和Mi的一般整数i。我现在没有MATLAB打开来测试它,但我认为一定有一种方法使用sprintf/num2str的组合:
sprintf (“对象% s”, num2str (a));
如果a=1,返回"object1",如果a=2,返回"object2",等等,
希望这能有所帮助,尽管不是一个完整的答案。迈克
3评论
ananya米塔尔
ananya米塔尔 2020年6月3日
有什么方法可以命名一个图中大约100条曲线吗?这种手工的方法可能非常耗时。
提前谢谢你。

登录评论。


马特Tearle
马特Tearle 2011年12月1日
把文字叠加在图上,在线条旁边怎么样?
线(x, y)%或绘图(x,y)与保持
文本(max (x)马克斯(y), num2str (k))
你可以改变文本的(x,y)位置。你说的“线”是指直线还是一般的曲线?前者将使计算放置非常容易;后者需要更多的聪明,除非Max或min适合你。
3评论
玛杜丽
玛杜丽 2017年9月17日
当我想让文本在曲线的第一个点上时,我应该指定什么坐标?文本(x(1),y(1),标签)不工作

登录评论。


Igor Kubyshkin
Igor Kubyshkin 2019年2月26日
函数text2line (h, ksi, z, T)
在有句柄h的行/附近插入文本T
% ksi -到曲线起点的相对距离,
% z -沿法线向曲线移动
set(gcf, 'CurrentObject', h)
x = h.XData;
y = h.YData;
I = round(ksi* nummel (x));
得到局部斜率
dy = y (i + 1) - y(张);
dx = x (i + 1) - x(张);
D = dy/dx;
X = diff(get(gca, 'xlim'));
Y = diff(get(gca, 'ylim'));
P = paspect;
a = atan(d*p(2)*X/p(1)/Y)*180/pi;
显示文本
开关z = = 0
案例1
text(x(i), y(i), T,'HorizontalAlignment','center', 'BackgroundColor', 'w', 'rotation', a);
例0
ez = (dy, dx) /规范((dy, dx));单位法向量%
文本(x(我)+ z * ez (1), y(我)+ z * ez (2), T,“HorizontalAlignment”,“中心”、“旋转”,a);
结束
5个评论
nlm
nlm 2020年7月30日
@ Holden Tranquillo
你是怎么做到的?

登录评论。


纳撒尼尔·W
纳撒尼尔·W 2018年5月8日
很晚才回答,不过我之前也试着这么做。下面是一个有效的解决方案,允许你使用if语句来添加额外的图和标签:
t = 1:1:10;
x = t;
val = true;
plot = plot(t,x,t,2*x);
名称= {“x = t '“x = 2 t '};
持有
如果瓦尔
块结束(+ 1)=情节(t, x。* x);
名字{结束+ 1}=“x = t ^ 2”
结束
传奇(情节,名称)
信贷 对于这个答案 用于制作图例文本附加工作。

伊曼纽尔Adesina
伊曼纽尔Adesina 2021年4月24日
@Matt Tearle 解决方案工作很好,但把所有标签几乎在同一行…
线(x, y)%或绘图(x,y)与保持
如果Max (y) > 0
Text (max(x), max(y), num2str(k))
结束
如果Max (dtm) < 0
Text (max(x), min(y), num2str(k))
结束
这将检查绘图是正的还是负的,并相应地放置标签
如果你把两者都设为最小值,它会把它放在直线的原点。
我希望有办法把它设在这条线上的中点或其他坐标上。

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!