2014-09-12 58 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