在循环中绘制多条线时保留颜色(Matlab)
我正在一系列图像上绘制数量不断变化的直线轨迹。我希望线条具有不同的颜色(尽可能多),并且希望在整个序列中保留颜色。 我的代码现在使用一个plot命令(在循环中绘制多条线时保留颜色(Matlab),matlab,image-processing,colors,plot,Matlab,Image Processing,Colors,Plot,我正在一系列图像上绘制数量不断变化的直线轨迹。我希望线条具有不同的颜色(尽可能多),并且希望在整个序列中保留颜色。 我的代码现在使用一个plot命令(plot(traj_to_plot{:})),使用一个单元格数组,其中包含每个轨迹的交替x和y坐标(意思是traj_to_plot={[traj1_x__coor][traj1_y_coor][traj2 u x_coor][traj2 u y_coor]…})。循环的每个循环之间的轨迹顺序并不总是保持不变,轨迹的数量也可能会改变,如前所述。我需要
plot(traj_to_plot{:})
),使用一个单元格数组,其中包含每个轨迹的交替x和y坐标(意思是traj_to_plot={[traj1_x__coor][traj1_y_coor][traj2 u x_coor][traj2 u y_coor]…}
)。循环的每个循环之间的轨迹顺序并不总是保持不变,轨迹的数量也可能会改变,如前所述。我需要某种方式将一帧中绘制的轨迹与连续帧中绘制的相同轨迹联系起来,如果它停止,我需要以下轨迹保持相同的颜色(而不是简单地根据ColorOrder循环进行更改)
以下是发生更改的两个连续图像:
问题在这些样本照片中显而易见。因为第二帧中无法识别蚂蚁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
+1可能值得合并一个
mod
,以允许具有相同颜色序列的任意数量的绘图,即颜色{mod(ii-1,numel(颜色))+1}
。编辑:哦,我知道你已经这样做了,但是你仍然需要-1…+1,否则当ii==numel(颜色):-)时你会得到一个错误,这实际上不是我的意思,因为它不考虑在循环周期之间分配给相同轨迹的颜色的变化traj1
坐标可以是下一个循环中的traj 17
(或任何其他相关数字)。尽管如此,我还是对这一努力表示赞赏。我自己设法解决了这个问题,通过给每一只新蚂蚁分配一种特定的颜色(使用hsv颜色图),并在整个分析过程中跟踪轨迹。