2013-04-04 296 views
0

我正在繪製一系列圖像上線條軌跡數量的變化。我希望線條具有不同的顏色(儘可能多),並且我希望顏色在整個序列中保留。 我的代碼現在使用一個繪圖命令(plot(traj_to_plot{:})),使用一個單元陣列,每個軌跡包含交替的x和y座標(意思是traj_to_plot={[traj1_x_coor] [traj1_y_coor] [traj2_x_coor] [traj2_y_coor] ...})。如上所述,循環的每個循環之間的軌跡的順序並不總是保持不變,並且軌跡的數量可以改變。我需要某種方式將在一幀中繪製的軌跡與連續繪製的相同軌跡框架,如果停止,我需要以下軌跡保持相同的顏色(而不是簡單地根據ColorOrder週期進行更改)。在繪製循環中的多條線時保留顏色(Matlab)

這裏就是發生變化的兩個連續的圖像: 1st frame enter image description here

問題是在這些樣品的照片明顯。由於第二幀中沒有識別到​​螞蟻號2,所以顏色順序循環改變了大部分軌跡的顏色。 任何想法?

回答

2

你可以手動指定顏色,每個小區像這樣:

figure(); 
hold on; 

plot(traj_to_plot{1},'red') 
plot(traj_to_plot{2},'blue') 

等。

如果這是一個重複性任務,你可以使用的線沿線的東西:

colours = {'blue', 'green', 'red', 'cyan', 'magenta', 'yellow', 'black'}; 

figure(); 
hold on; 

traj_to_plot1{1} = [1 2 3]; 
traj_to_plot1{2} = [0 2 4]; 

for ii=1:numel(traj_to_plot1) 
    plot(traj_to_plot1{ii},colours{mod(ii,numel(colours))}); 
end 

traj_to_plot2{1} = [0.5 2 3.5]; 
traj_to_plot2{2} = [-0.5 2 4.5]; 
traj_to_plot2{3} = [-1.0 2 5]; 

for ii=1:numel(traj_to_plot2) 
    plot(traj_to_plot2{ii},colours{mod(ii-1,numel(colours))+1}); %Thanks to @wakjah. 
end 

enter image description here

+1

+1可能是值得結合了'mod'允許地塊任意數量的具有相同顏色序列 - 即'顏色{mod(ii-1,numel(顏色))+ 1}'。編輯:哦,我看到你已經做到了這一點,但你仍然需要-1 ... + 1,否則當ii == numel(顏色)時你會得到一個錯誤:-) – wakjah 2013-04-04 17:48:24

+0

@wakjah:謝謝。 :) – 2013-04-04 17:52:34

+0

這實際上並不是我的意思,因爲它沒有考慮分配給循環之間相同軌跡的顏色變化。在下一個循環中,「traj1」座標可以是「traj 17」(或其他任何數字)。不過,我很欣賞這種努力。 我設法通過爲每個新的螞蟻分配特定的顏色(使用hsv colormap)並在整個分析過程中跟蹤軌跡身份來自己解決這個問題。 – 2013-04-07 07:32:01