Search code examples
rggplot2histogramgradient

Coloring a geom_histogram by gradient


I'm trying to plot a geom_histogram where the bars are colored by a gradient.

This is what I'm trying to do:

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")

But getting: enter image description here

Any idea how to get it colored by the defined gradient?


Solution

  • Not sure you can fill by val because each bar of the histogram represents a collection of points.

    You can, however, fill by categorical bins using cut. For example:

    ggplot(df, aes(val, fill = cut(val, 100))) +
      geom_histogram(show.legend = FALSE)
    

    histogram