5

我正在尝试以data类似直方图的样式绘制向量。这总是很容易,因为plot(data, type="h")正是我想要的。但是,颜色有问题。我的矢量data看起来像这样:

 data = c(1,2,2,3,1,1,2,3,1,2,2,3, ... )

我想看到的是,每一个1都用一种颜色绘制,每2一个都用不同的颜色绘制,每一个都3一样。我试图用

 plot(data, type="h", col=c("red","blue","green")

但它失败了 R 循环颜色向量,所以第一个条是红色的,第二个是蓝色的,第三个是绿色的,第四个是红色的,依此类推。

我对通用解决方案非常感兴趣,因为我的data向量并不总是由数字12组成3。在很多情况下,向量包含从 1 到 6 的数字。

有谁知道如何解决这个问题?

4

3 回答 3

11

您需要创建一个长度相同的颜色矢量,如下所示:

data = c(1,2,2,3,1,1,2,3,1,2,2,3)
colors = c("red","blue","green")
plot(data, type="h", col=colors[data])

这有效,因为colors[data]看起来像:

print(colors[data])
#  [1] "red"   "blue"  "blue"  "green" "red"   "red"   "blue"  "green" "red"  
# [10] "blue"  "blue"  "green"
于 2012-11-13T16:25:04.133 回答
6

试试这个一般方法:

data = c(1,2,2,3,1,1,2,3,1,2,2,3,4,5,6,7,12,3)
colors = rainbow(length(unique(data)))
plot(data, type="h", col=colors[data])
于 2012-11-13T16:46:48.217 回答
0
 colors = rainbow(length(unique(data)));
 hist(data, col=colors[data]) 

使用先生。lapalme 的数据(上图)

于 2012-11-13T21:12:25.800 回答