我有一个看起来像这样的数据集(n = 9,141,954)
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”和“red3”
我知道我可以使用col = c(“darkgreen”,“chartreuse4”,....等),但我想做的是将这些颜色显示为直方图上的渐变,由每个值对数据集的相对贡献。例如,value = 1仅占单元格值的0.004%(401/9141954 * 100),而value = 4则占数据的32.9%。因此,我希望渐变显示为0.004%与“darkgreen”相关联,但32.9%与“yellow”相关联,依此类推其余的值/颜色。
有谁知道如何做到这一点???
答案 0 :(得分: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)
结果,不幸的是看起来并不那么令人兴奋,但是如果你将条形图绘制成均匀的高度,那么颜色就在那里: