2016-02-05 158 views
0

我有一個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 

回答

0

這是一個壞主意,用16種顏色來區分數據點。喜歡的顏色將融合在一起。我建議使用不同的標記+顏色。四個標記,如'*','x','+','.'等,每個標記有四種顏色。那麼你可以使用legend('Class 1','Class 2', Class n')。它應該顯示特定顏色的每個標記。這可能是這樣的情況,如果最好寫出沒有循環的每一行,並且在每個標記/顏色/類描述它是什麼之後添加%註釋,以防以後必須回到此代碼。這不是一個真正的解決方案,但是這就是我要做的。

+0

標記顏色的想法是一個很好的想法,因爲我可以區分不同的子類,雖然「legend('class1',... etc)部分不起作用,因爲圖例不知道相應的類,它只是指前16個樣本,它們恰好是ay類的 –

0

您可以繪製單個類的所有數據點以及邏輯索引。

假設你有某處定義的類,在class_number這是相同的長度data說,與條目從116,和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); 
+0

我的問題不是如何用多個值調用圖例,而不是將點的顏色與圖例的特定值相關聯 –

+0

@ConstantinePat好吧,不知道如何將它添加到你的原始版本的情節,但建議另一種繪圖方式應該與它一起工作。 – Steve