通过渐变着色geom_histogram

dan*_*dan 5 gradient r histogram ggplot2

我正在尝试绘制一个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")
Run Code Online (Sandbox Code Playgroud)

但得到: 在此输入图像描述

任何想法如何通过定义的渐变着色?

Sim*_*son 11

不确定是否可以填充,val因为直方图的每个条形代表一组点.

但是,您可以使用分类箱填写cut.例如:

ggplot(df, aes(val, fill = cut(val, 100))) +
  geom_histogram(show.legend = FALSE)
Run Code Online (Sandbox Code Playgroud)

直方图


dan*_*dan 5

只是为了完整性。

如果我想手动选择渐变颜色,我的建议是:

数据:

library(ggplot2)
set.seed(1)
df <- data.frame(id=paste("ID",1:1000,sep="."),val=rnorm(1000),stringsAsFactors=F)
Run Code Online (Sandbox Code Playgroud)

颜色:

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))])
Run Code Online (Sandbox Code Playgroud)

阴谋:

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))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明