在循环中绘制多条线时保留颜色(Matlab)

时间:2013-04-04 17:26:01

标签: matlab image-processing colors plot

我正在绘制一系列图像上不断变化的线条轨迹。我希望线条具有不同的颜色(尽可能多),我希望颜色在整个序列中保留。 我的代码现在使用一个绘图命令(plot(traj_to_plot{:})),使用包含每个轨迹的交替x和y坐标的单元格数组(意思是traj_to_plot={[traj1_x_coor] [traj1_y_coor] [traj2_x_coor] [traj2_y_coor] ...})。如前所述,循环的每个循环之间的轨迹的顺序并不总是保留,并且轨迹的数量可以改变。我需要某种方式将一帧中绘制的轨迹与连续绘制的相同轨迹相关联。框架,如果它停止,我需要以下轨迹保持相同的颜色(不是简单地根据ColorOrder循环改变)。

这是发生变化的两个连续图像: 1st frame enter image description here

这些样本照片中的问题很明显。因为在第二帧中未识别蚂蚁数2,所以颜色顺序周期改变了大多数轨迹的颜色。 有任何想法吗?

1 个答案:

答案 0 :(得分: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