2015-02-23 2 views
1

Привет, я пытаюсь использовать colormap для назначения цветов линиям на графике. Данные для каждой строки генерируются из файла, а количество импортируемых файлов/строк - это переменные каждый раз. Мой код для этого:Matlab colormap line plot

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)) так, чтобы линии бежать от красного до синего и равномерно разнесены в спектре.

Однако, поскольку различное количество файлов импортируется каждый раз, я не знаю, сколько будет n. Я пробовал работать в моем коде, но я получаю ошибки каждый раз, может кто-нибудь мне помочь?

Заранее спасибо

Вера

ответ

1

Вы можете указать количество равноотстоящих цветов, которые вы хотите от палитры, так, например, 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; 
+0

Ничего себе, спасибо, я не ожидал решения так быстро! – VeraM

+0

Код работал отлично, и спасибо, что помогли мне понять, как использовать colormap в моем коде :) – VeraM

+0

Добро пожаловать. Если ответ работает на вас, вы можете отметить его как правильное. – dasdingonesin