我试图绘制一个geom_histogram,其中条形用渐变着色。
这就是我想要做的事情:
library(ggplot2)
set.seed(1)
df <- data.frame(id=paste("ID",1:1000,sep="."),val=rnorm(1000),stringsAsFactors=F)
ggplot(df,aes_string(x="val",y="..count..+1",fill="val"))+geom_histogram(binwidth=1,pad=TRUE)+scale_y_log10()+scale_fill_gradient2("val",low="darkblue",high="darkred")
知道如何通过定义的渐变使其着色吗?
答案 0 :(得分:10)
不确定您是否可以填val
,因为直方图的每个条形代表一组点。
但是,您可以使用cut
填写分类区。例如:
ggplot(df, aes(val, fill = cut(val, 100))) +
geom_histogram(show.legend = FALSE)
答案 1 :(得分:2)
只是为了完整。
如果我想在这里手动选择渐变的颜色,我建议:
数据:
library(ggplot2)
set.seed(1)
df <- data.frame(id=paste("ID",1:1000,sep="."),val=rnorm(1000),stringsAsFactors=F)
颜色
bins <- 10
cols <- c("darkblue","darkred")
colGradient <- colorRampPalette(cols)
cut.cols <- colGradient(bins)
cuts <- cut(df$val,bins)
names(cuts) <- sapply(cuts,function(t) cut.cols[which(as.character(t) == levels(cuts))])
情节:
ggplot(df,aes(val,fill=cut(val,bins)))+geom_histogram(show.legend=FALSE)+scale_color_manual(values=cut.cols,labels=levels(cuts))+scale_fill_manual(values=cut.cols,labels=levels(cuts))