gpt4 book ai didi

matlab - Matlab 图中多条线的图例

转载 作者:太空宇宙 更新时间:2023-11-03 19:48:32 25 4
gpt4 key购买 nike

我在一个图上有 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)

最佳答案

作为构造图例的替代方法,您还可以设置线条的 DisplayName 属性,以便图例自动正确。

因此,您可以执行以下操作:

N_FILES = 13;
N_FRAMES = 2999;
a = 1.20; b = 0.05;

% # create colormap (look for distinguishable_colors on the File Exchange)
% # as an alternative to jet
cmap = jet(N_FILES);

x = linspace(1,N_FRAMES,N_FRAMES);

figure(1)
hold on % # make sure new plots aren't overwriting old ones

for i = 1:N_FILES
eta = a + (i-1)*b ;
fname = sprintf('phi_per_timestep_eta=%3.2f.txt', eta);
y = load(fname);

%# plot the line, choosing the right color and setting the displayName
plot(x,y,'Color',cmap(i,:),'DisplayName',sprintf('%3.2f',eta));
end

% # turn on the legend. It automatically has the right names for the curves
legend

关于matlab - Matlab 图中多条线的图例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5574466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com