2012-11-13 54 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的數據(以上)