Matlab色彩图线图

时间:2015-02-23 12:19:07

标签: matlab plot line colormap

我试图使用色彩图为图上的线指定颜色。每行的数据都是从文件生成的,每次导入的文件数/绘制的行数都是可变的。我的代码是:

d = uigetdir(pwd, 'Select a folder');
files = dir(fullfile(d, '*.txt'));
len = length(files);
for i = 1:len
    a = files(i).name;
    filename{i} = a;
    path = [d,'\',a];
    colour = round(random('unif',0,200,1,3))/255;
    data = dlmread(path);
    plot(data(:,1), data(:,2),'color',colour,'linewidth',2);
    hold on;
end
hold off;

此时线条的颜色是随机生成的,但我真的想使用colormap (jet(n)),以便线条从红色变为蓝色,在光谱中间距相等。

但是,由于每次导入的文件数量不同,我不知道会有多少文件。我尝试将色彩映射到我的代码中,但每次都会出错。

1 个答案:

答案 0 :(得分:2)

您可以从色彩图中指定所需的等间距颜色数,例如jet(20)将为您提供20种等距RGB颜色,从蓝色到红色。

您可以使用此颜色为您的各个行着色,如下所示:

x = [0:0.1:10];
linecolors = jet(5);
for i=1:5
    plot(x,x.^(i/3),'color',linecolors(i,:));
    hold on;
end

Colored lines

应用于您的特定问题,代码看起来像这样(未经测试):

d= uigetdir(pwd, 'Select a folder');

files = dir(fullfile(d, '*.txt'));

len = length(files);

linecolors = jet(len);

for i = 1:len

    a = files(i).name;

    filename{i} = a;

    path = [d,'\',a];

    data = dlmread(path);

    plot(data(:,1), data(:,2),'color',linecolors(i,:),'linewidth',2);

    hold on;

end

hold off;