2012-11-13 44 views
5

我想用直方图风格绘制矢量data。这总是很容易,因为plot(data, type="h")完全符合我的要求。但是,颜色有问题。我的矢量data看起来是这样的:用R中的不同颜色绘制直方图状的阴影

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遍历颜色矢量失败,使得第一条是红色,第二蓝,绿第三,第四红色再等等。

我在通用的解决方案非常interessted,因为我data载体并不总是包括数字123的。有很多情况下矢量持有的数字从1到6.

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

回答

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" 
+0

我该如何将它应用于一系列数据?例如,我想有-100到100之间的任何东西都是红色的,其他的都是蓝色的? – user1007742

+0

@ user1007742:使用'cut'分割它:即'mydatacut = cut(x,c(-Inf,-100,100,Inf))''。这将创建一个有三个层次的因子然后你可以在你的例子中使用'color [as.numeric(mydatacut)]'这个因子是,'c(“blue”,“red”,“blue”)' –

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]) 
0
colors = rainbow(length(unique(data))); 
hist(data, col=colors[data]) 

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