【问题标题】:Plot with color corresponding to label绘制与标签对应的颜色
【发布时间】:2014-09-12 09:55:32
【问题描述】:

我有一个如下所示的矩阵:

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

【问题讨论】:

  • 在我的示例中,c 是一个包含 RGB 颜色的矩阵,因此具有红色、绿色、蓝色 3 列。在上面的代码中,您为 c 创建了一个 4x4 矩阵,但它不起作用。

标签: plot octave


【解决方案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")

d 是您的数据,我添加了一行来显示一个蓝点,v 是您的“值向量”,c 是您的颜色的颜色图,它需要是一个 nx3 RGB 矩阵。我添加了更多颜色。

【讨论】:

  • 感谢您的帮助!我编辑了起始帖子以显示我遇到的错误类型。
  • 问题:我看到颜色是从 c 的输入组合中选择的。如何使用更多颜色?
  • c 的列是红、绿、蓝的值。您可以在添加更多列的同时手动添加更多颜色,也可以使用预定义的颜色图之一。参见“colormap”或jet、winter、fall等。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多