我有一個matlab代碼,其中我繪製了幾個2d點,屬於16類,所以我使用16種不同的顏色。有沒有簡單的方法讓圖例表示每種顏色的類名?Matlab的圖形繪製循環用不同的顏色
代碼看起來是這樣的:
for i=1:length(data)
color = class_color(i);
plot(data(i,1),data(i,2),'*','Color',color);
hold on;
end
我有一個matlab代碼,其中我繪製了幾個2d點,屬於16類,所以我使用16種不同的顏色。有沒有簡單的方法讓圖例表示每種顏色的類名?Matlab的圖形繪製循環用不同的顏色
代碼看起來是這樣的:
for i=1:length(data)
color = class_color(i);
plot(data(i,1),data(i,2),'*','Color',color);
hold on;
end
這是一個壞主意,用16種顏色來區分數據點。喜歡的顏色將融合在一起。我建議使用不同的標記+顏色。四個標記,如'*'
,'x'
,'+'
,'.'
等,每個標記有四種顏色。那麼你可以使用legend('Class 1','Class 2', Class n')
。它應該顯示特定顏色的每個標記。這可能是這樣的情況,如果最好寫出沒有循環的每一行,並且在每個標記/顏色/類描述它是什麼之後添加%註釋,以防以後必須回到此代碼。這不是一個真正的解決方案,但是這就是我要做的。
您可以繪製單個類的所有數據點以及邏輯索引。
假設你有某處定義的類,在class_number
這是相同的長度data
說,與條目從1
到16
,和c_colors
,長度爲16的單元陣列與對應於每個類別的顏色:然後
for jj = 1:16
mask = (class_number==jj);
plot(data(mask,1),data(mask,2),'*','Color',c_colors{jj});
hold on
end
hold off
(未測試)。
然後,您可以將類的名稱存儲在單元格數組中,並在其上調用legend
。
class_name{1} = 'Type a';
class_name{2} = 'Type b';
% etc, up to
class_name{15} = 'Type o';
class_name{16} = 'Type p';
legend(class_name);
我的問題不是如何用多個值調用圖例,而不是將點的顏色與圖例的特定值相關聯 –
@ConstantinePat好吧,不知道如何將它添加到你的原始版本的情節,但建議另一種繪圖方式應該與它一起工作。 – Steve
標記顏色的想法是一個很好的想法,因爲我可以區分不同的子類,雖然「legend('class1',... etc)部分不起作用,因爲圖例不知道相應的類,它只是指前16個樣本,它們恰好是ay類的 –