2015-02-23 205 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 2015-02-23 12:43:59

+0

該代碼完美工作,並感謝幫助我瞭解如何在我的代碼中使用色彩地圖:) – VeraM 2015-02-23 12:44:51

+0

不客氣。如果答案適合您,您可以將其標記爲正確。 – dasdingonesin 2015-02-23 12:45:34