用标签对应的颜色绘图

时间:2014-09-12 09:55:32

标签: plot octave

我有一个看起来像这样的矩阵:

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]);

我现在要做的是更进一步:我希望我的绘图中的每个点都以不同的颜色绘制,具体取决于包含矩阵中每一行信息的向量,例如:

  • 向量中的第一个条目是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

1 个答案:

答案 0 :(得分: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矩阵。我添加了更多颜色。