2014-09-12 87 views
0

我有一個矩陣,看起來像這樣:繪圖與色彩對應的標記

0.3234 0.5432 
0.0283 0.432 
0.1234 0.4562 
... 

和包含在矩陣中的每一行的值,尋找這樣的載體:

1 
3 
1 
2 
... 

我已經找到了如何繪製我的點圖:

plot(data(:,1), data(:,2), '.'), axis([0 1 0 1]); 

我想現在要做的是更進一步:我希望每個點在m以不同的顏色來繪製Y圖表,這取決於包含的信息對矩陣中的每行的載體,例如:

  • 在載體中的第一項是1,在該點[0.3234 0.5432]應紅
  • 在載體中的第二項是3,在[0.0283 0.432]點應爲藍色
  • ...

我該怎麼辦呢?

編輯: 這是我現在(我用四個標籤,現在,但它也沒有具有三個工作):

labels = csvread('labels.txt'); 
c = [1 0 0 0 
    0 1 0 0 
    0 0 1 0 
    0 0 0 1]; 

scatter (data(:,1), data(:,2), 8, c(labels, :), "filled"); 
grid on 
print ("out.png") 

而且我得到這個錯誤:

error: invalid value for array property "facevertexcdata" 
error: called from: 
error: /usr/share/octave/3.8.1/m/plot/draw/private/__scatter__.m at line 177, column 11 
error: /usr/share/octave/3.8.1/m/plot/draw/scatter.m at line 86, column 10 
error: /home/bryan/octave/test.m at line 64, column 1 
+0

在我的例子中,c是一個保存RGB顏色的矩陣,因此有3列紅,綠,藍。在你的代碼中,你爲c做了一個4×4的矩陣,這是行不通的。 – Andy 2014-09-12 14:40:45

回答

1

的「點圖」使用分散: 編輯:我已經更新了我的例子,使用了更多的顏色

d = [0.3234 0.5432 
    0.0283 0.432 
    0.1234 0.4562 
    0.4 0.5 
    0.3 0.46 
    0.2 0.5]; 

v= [1;3;1;2;5;4]; 

c = [1 0 0 #red  (index 1) 
    0 1 0 #green (index 2) 
    0 0 1 #blue (index 3) 
    1 1 0 #yellow (index 4) 
    1 0 1]; #magenta (index 5) 

scatter (d(:,1), d(:,2), 8, c(v, :), "filled") 
grid on 
print ("out.png") 

Created scatter plot

d是你的數據,我添加一條線來顯示一個藍點,V你的「值載體」,和c用顏色的顏色表,其需要一個NX3 RGB矩陣。我添加了更多顏色。

+0

謝謝你的幫助!我編輯了開始帖子,以顯示我收到的錯誤。 – user1406177 2014-09-12 12:33:50

+0

問題:我看到顏色是從c的輸入組合中選擇的。我怎樣才能使用更多的顏色? – user1406177 2014-09-17 09:51:20

+0

c的列是紅色,綠色,藍色的值。您可以在添加更多列的同時手動添加更多顏色,也可以使用其中一個預定義的顏色表。見「色彩地圖」或噴射,冬季,秋季等。 – Andy 2014-09-17 14:00:51