2013-04-04 297 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