2014-02-06 8 views
1

直方圖我有一個數據集(N = 9141954),看起來像這樣使用梯度顯示用於在r中

data<-c(rep(1, times=401),rep(2,times=443789),rep(3,times=5276376),rep (4,times=3003895),rep(5,times=404108),rep(6,times=13181),rep(7,times=205)) 

哪個作爲直方圖看起來像這樣:

hist(data,prob=T,breaks=5) 

從左至右,我想顯示顏色「darkgreen」「chartreuse4」「yellowgreen」「yellow」「orange2」「red」and「red3」

我知道我可以使用col = c(「darkgreen」,「chartreuse4」 ,....等),但我想要做的是顯示這些顏色作爲跨直方圖的梯度,通過每個值對數據集的相對貢獻進行加權。例如,值= 1只佔單元值(401/9141954 * 100)的0.004%,值= 4佔數據的32.9%。因此,我希望漸變顯示的「深綠色」爲0.004%,而「黃色」爲32.9%,其餘的值/顏色也是如此。

有誰知道這可以做到嗎?

回答

0

這樣的事情?

res <- hist(data,breaks=5) 
plot(res) 

cols <-c("darkgreen","chartreuse4","yellowgreen","yellow","orange2","red","red3") 
colcombos <- data.frame(embed(cols,2)[,2:1],nums=round(res$density*600)) 
selcols <- unlist(
      apply(colcombos,1,function(x) colorRampPalette(c(x[1],x[2]))(x[3])) 
      ) 

dens <- 100 
bar.dens <- 1/100 

rect(
seq(1,7-bar.dens,bar.dens), 
0, 
seq(1+bar.dens,7,bar.dens), 
rep(res$counts,each=dens), 
col=selcols, 
border=NA 
) 

plot(res,add=TRUE) 

的結果,這看起來並不令人興奮不幸,但顏色都在那裏,如果情節barplots全部高度統一:

enter image description here

enter image description here

+0

嗨。感謝回覆。但是我在梯度底紋之後,從綠色通過黃色橙色變爲紅色,顯示「深綠色」的比例對齊值1 ...直到紅色對齊值7的值。對不起我之前的解釋並不清楚!我不知道如何創建漸變陰影,類似於黑色到白色的灰度顯示? – user3229751

+0

我不確定你的意思。難道這只是使用'hist(...,col = c(「darkgreen」,「charteuse4」等))才能實現的。你可以模擬一個例子並將它發佈到imgur.com或類似的地方嗎? – thelatemail

+0

再次嗨。對不起(新來R和堆棧交換!)我試圖在一個bin中顯示多個顏色。上面的例子有4個bin,我想從左到右顯示7種顏色,類似於3D輪廓圖上經常使用的彩虹顯示。我注意到你對前一篇文章的回答,看起來類似於使用colorRampPalette(col = c(紅色,藍色)的n種顏色的漸變)。但關鍵的區別是,我想要在直方圖區域內顯示多種顏色,即在4個或5個區域內着色的七種顏色.... – user3229751