手动为循环生成的绘图添加图例

时间:2016-01-26 01:00:24

标签: matlab plot legend

我在Matlab中一次生成一个绘图,具体取决于循环中条件的满足程度:

for i=1:size(Ind,1)
    if(Ind(i)==1)
        c='ro';
    elseif(Ind(i)==2)
        c='bo';
    elseif(Ind(i)==3) 
        c='go';
    end
     plot(i,Y(i),c) %plotting some other value with the color chosen.
     hold on
  end

如何为此添加图例条目?我想将索引位置(1,2和3)与图例中的红色,蓝色和绿色相关联。

谢谢!

1 个答案:

答案 0 :(得分:2)

由于您在理论上创建了大量的绘图对象,因此创建3个绘图对象(每种颜色之一)或创建gscatter绘图要好得多。处理大量的绘图对象时,MATLAB的速度非常慢。

创建3个绘图对象(红色,绿色,蓝色)

Ind = ceil(rand(100,1) * 3);
Y = rand(100,1);

figure;
red_plots = plot(find(Ind == 1), Y(Ind == 1), 'ro', 'DisplayName', 'red');
hold on;
blue_plots = plot(find(Ind == 2), Y(Ind == 2), 'go', 'DisplayName', 'green');
green_plots = plot(find(Ind == 3), Y(Ind == 3), 'bo', 'DisplayName', 'blue');
title('Three Plots')

legend([red_plots, blue_plots, green_plots])

enter image description here

制作gscatter剧情

figure;
s = gscatter(1:size(Ind, 1), Y, Ind);
set(s, 'Marker', 'o')
title('Scatter')
legend({'red', 'green', 'blue'})

enter image description here

如果您没有gscatter所在的统计工具箱,那么您可以随时使用香草scatter

figure;
s = scatter(1:size(Ind, 1), Y, 'CData', Ind, 'Marker', 'o');
title('Scatter')
colormap(eye(3));

enter image description here