Matlab 图中多条线的图例
我的绘图上有 13 条线,每条线对应于文本文件中的一组数据。我想将第一组数据开始的每一行标记为 1.2,然后是 1.25、1.30、1.80 等,每个增量为 0.05。如果我手动打出来,那就是
legend('1.20','1.25','1.30', ...., '1.80')
但是,将来我的图表上可能会有超过 20 条线。所以把每一项都打出来是不现实的。我尝试在图例中创建一个循环,但它不起作用。
我怎样才能以实际的方式做到这一点?
N_FILES=13 ;
N_FRAMES=2999 ;
a=1.20 ;b=0.05 ;
phi_matrix = zeros(N_FILES,N_FRAMES) ;
for i=1:N_FILES
eta=a + (i-1)*b ;
fname=sprintf('phi_per_timestep_eta=%3.2f.txt', eta) ;
phi_matrix(i,:)=load(fname);
end
figure(1);
x=linspace(1,N_FRAMES,N_FRAMES) ;
plot(x,phi_matrix) ;
这里需要帮助:
legend(a+0*b,a+1*b,a+2*b, ...., a+N_FILES*b)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
作为构建图例的替代方法,您还可以设置线条的
DisplayName
属性,以便图例自动正确。因此,您可以执行以下操作:
As an alternative to constructing the legend, you can also set the
DisplayName
property of a line so that the legend is automatically correct.Thus, you could do the following:
使用“DisplayName”作为plot()属性,并将图例称为我的
代码如下所示:
来源:http ://undocumentedmatlab.com/blog/legend-semi-documented-feature/
Use 'DisplayName' as a plot() property, and call your legend as
My code looks like this:
source: http://undocumentedmatlab.com/blog/legend-semi-documented-feature/
legend
还可以将字符串单元格列表作为参数。试试这个:legend
can also take a cell list of strings as an argument. Try this:最简单的方法可能是创建一个数字的列向量用作标签,使用函数 N_FILES 行的格式化字符数组.mathworks.com/help/techdoc/ref/num2str.html" rel="nofollow">NUM2STR,然后将其作为单个参数传递给 图例:
The simplest approach would probably be to create a column vector of the numbers to use as your labels, convert them to a formatted character array with
N_FILES
rows using the function NUM2STR, then pass this as a single argument to LEGEND:我通过 Google 找到了这个 :
所以基本上,看起来你可以以某种方式构造一个矩阵来做到这一点。
一个例子:
I found this I found through Google:
So basically, it looks like you can construct a matrix somehow to do this.
An example: