如何在图表上标注线条
2,614次浏览(过去30天)
显示旧的注释
答案(8)
Mael Pouget
2021年8月10日
我知道这是十年前的问题了,但是
情节(曲线,“DisplayName的”,“传说的曲线名称”)
%或
Ax = axes();
(ax,“上”);
为I = 1:10
情节(我* (1:10),“DisplayName的”,[“曲线#”num2str(我)))
结束
(ax,“关闭”);
传奇();
对于像我这样在plot()调用中命名行时遇到这个问题的人来说。
0评论
迈克尔
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",等等,
希望这能有所帮助,尽管不是一个完整的答案。迈克
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);
结束
伊曼纽尔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))
结束
这将检查绘图是正的还是负的,并相应地放置标签
如果你把两者都设为最小值,它会把它放在直线的原点。
我希望有办法把它设在这条线上的中点或其他坐标上。