【问题标题】:Retaining colors while plotting multiple lines in a loop (Matlab)在循环中绘制多条线时保留颜色(Matlab)
【发布时间】:2013-04-04 17:26:00
【问题描述】:

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

这是两个发生变化的连续图像:

这些示例照片中的问题很明显。由于在第二帧中没有识别出 2 号蚂蚁,因此颜色顺序循环改变了大部分轨迹的颜色。 有任何想法吗?

【问题讨论】:

    标签: matlab image-processing colors plot


    【解决方案1】:

    您可以像这样手动为每个图分配颜色:

    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 以允许具有相同颜色序列的任意数量的图 - 即colours{mod(ii-1, numel(colours))+1}。编辑:哦,我知道你已经这样做了,但你仍然需要 -1...+1 否则当 ii==numel(colours) 时你会得到一个错误:-)
    • 这实际上不是我的意思,因为它不关心在循环周期之间分配给相同轨迹的颜色的变化。在下一个循环中,traj1 坐标可以是 traj 17(或任何其他数字)。尽管如此,我很欣赏这种努力。我设法自己解决了这个问题,通过为每个新蚂蚁分配特定的颜色(使用 hsv 颜色图)并在整个分析过程中跟踪轨迹身份。
    猜你喜欢
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多