Works like stat_bin
except that the output is a ridgeline describing the histogram rather than
a set of counts.
stat_binline( mapping = NULL, data = NULL, geom = "density_ridges", position = "identity", ..., binwidth = NULL, bins = NULL, center = NULL, boundary = NULL, breaks = NULL, closed = c("right", "left"), pad = TRUE, draw_baseline = TRUE, na.rm = FALSE, show.legend = NA, inherit.aes = TRUE )
mapping | Set of aesthetic mappings created by |
---|---|
data | The data to be displayed in this layer. There are three options: If A A |
geom | Use to override the default connection between
|
position | Position adjustment, either as a string, or the result of a call to a position adjustment function. |
... | Other arguments passed on to |
binwidth | The width of the bins. Can be specified as a numeric value
or as a function that calculates width from unscaled x. Here, "unscaled x"
refers to the original x values in the data, before application of any
scale transformation. When specifying a function along with a grouping
structure, the function will be called once per group.
The default is to use the number of bins in The bin width of a date variable is the number of days in each time; the bin width of a time variable is the number of seconds. |
bins | Number of bins. Overridden by |
center | bin position specifiers. Only one, |
boundary | bin position specifiers. Only one, |
breaks | Alternatively, you can supply a numeric vector giving
the bin boundaries. Overrides |
closed | One of |
pad | If |
draw_baseline | If |
na.rm | If |
show.legend | logical. Should this layer be included in the legends?
|
inherit.aes | If |
library(ggplot2) ggplot(iris, aes(x = Sepal.Length, y = Species, group = Species, fill = Species)) + geom_density_ridges(stat = "binline", bins = 20, scale = 2.2) + scale_y_discrete(expand = c(0, 0)) + scale_x_continuous(expand = c(0, 0)) + coord_cartesian(clip = "off") + theme_ridges()ggplot(iris, aes(x = Sepal.Length, y = Species, group = Species, fill = Species)) + stat_binline(bins = 20, scale = 2.2, draw_baseline = FALSE) + scale_y_discrete(expand = c(0, 0)) + scale_x_continuous(expand = c(0, 0)) + scale_fill_grey() + coord_cartesian(clip = "off") + theme_ridges() + theme(legend.position = 'none')library(ggplot2movies) ggplot(movies[movies$year>1989,], aes(x = length, y = year, fill = factor(year))) + stat_binline(scale = 1.9, bins = 40) + scale_x_continuous(limits = c(1, 180), expand = c(0, 0)) + scale_y_reverse(expand = c(0, 0)) + scale_fill_viridis_d(begin = 0.3, option = "B") + coord_cartesian(clip = "off") + labs(title = "Movie lengths 1990 - 2005")#> Warning: Removed 118 rows containing non-finite values (stat_binline).#> List of 93 #> $ line :List of 6 #> ..$ colour : chr "black" #> ..$ size : num 0.636 #> ..$ linetype : num 1 #> ..$ lineend : chr "butt" #> ..$ arrow : logi FALSE #> ..$ inherit.blank: logi TRUE #> ..- attr(*, "class")= chr [1:2] "element_line" "element" #> $ rect :List of 5 #> ..$ fill : chr "transparent" #> ..$ colour : logi NA #> ..$ size : num 0 #> ..$ linetype : num 0 #> ..$ inherit.blank: logi TRUE #> ..- attr(*, "class")= chr [1:2] "element_rect" "element" #> $ text :List of 11 #> ..$ family : chr "" #> ..$ face : chr "plain" #> ..$ colour : chr "black" #> ..$ size : num 14 #> ..$ hjust : num 0.5 #> ..$ vjust : num 0.5 #> ..$ angle : num 0 #> ..$ lineheight : num 0.9 #> ..$ margin : 'margin' num [1:4] 0points 0points 0points 0points #> .. ..- attr(*, "unit")= int 8 #> ..$ debug : logi FALSE #> ..$ inherit.blank: logi TRUE #> ..- attr(*, "class")= chr [1:2] "element_text" "element" #> $ title : NULL #> $ aspect.ratio : NULL #> $ axis.title : NULL #> $ axis.title.x :List of 11 #> ..$ family : NULL #> ..$ face : NULL #> ..$ colour : NULL #> ..$ size : NULL #> ..$ hjust : num 1 #> ..$ vjust : NULL #> ..$ angle : NULL #> ..$ lineheight : NULL #> ..$ margin : 'margin' num [1:4] 6points 0points 3points 0points #> .. ..- attr(*, "unit")= int 8 #> ..$ debug : NULL #> ..$ inherit.blank: logi TRUE #> ..- attr(*, "class")= chr [1:2] "element_text" "element" #> $ axis.title.x.top :List of 11 #> ..$ family : NULL #> ..$ face : NULL #> ..$ colour : NULL #> ..$ size : NULL #> ..$ hjust : NULL #> ..$ vjust : num 0 #> ..$ angle : NULL #> ..$ lineheight : NULL #> ..$ margin : 'margin' num [1:4] 0points 0points 3.5points 0points #> .. ..- attr(*, "unit")= int 8 #> ..$ debug : NULL #> ..$ inherit.blank: logi TRUE #> ..- attr(*, "class")= chr [1:2] "element_text" "element" #> $ axis.title.x.bottom : NULL #> $ axis.title.y :List of 11 #> ..$ family : NULL #> ..$ face : NULL #> ..$ colour : NULL #> ..$ size : NULL #> ..$ hjust : num 1 #> ..$ vjust : NULL #> ..$ angle : num 90 #> ..$ lineheight : NULL #> ..$ margin : 'margin' num [1:4] 0points 6points 0points 3points #> .. ..- attr(*, "unit")= int 8 #> ..$ debug : NULL #> ..$ inherit.blank: logi TRUE #> ..- attr(*, "class")= chr [1:2] "element_text" "element" #> $ axis.title.y.left : NULL #> $ axis.title.y.right :List of 11 #> ..$ family : NULL #> ..$ face : NULL #> ..$ colour : NULL #> ..$ size : NULL #> ..$ hjust : NULL #> ..$ vjust : num 0 #> ..$ angle : num -90 #> ..$ lineheight : NULL #> ..$ margin : 'margin' num [1:4] 0points 0points 0points 3.5points #> .. ..- attr(*, "unit")= int 8 #> ..$ debug : NULL #> ..$ inherit.blank: logi TRUE #> ..- attr(*, "class")= chr [1:2] "element_text" "element" #> $ axis.text :List of 11 #> ..$ family : NULL #> ..$ face : NULL #> ..$ colour : chr "black" #> ..$ size : num 12 #> ..$ hjust : NULL #> ..$ vjust : NULL #> ..$ angle : NULL #> ..$ lineheight : NULL #> ..$ margin : NULL #> ..$ debug : NULL #> ..$ inherit.blank: logi TRUE #> ..- attr(*, "class")= chr [1:2] "element_text" "element" #> $ axis.text.x :List of 11 #> ..$ family : NULL #> ..$ face : NULL #> ..$ colour : NULL #> ..$ size : NULL #> ..$ hjust : NULL #> ..$ vjust : num 1 #> ..$ angle : NULL #> ..$ lineheight : NULL #> ..$ margin : 'margin' num [1:4] 3points 0points 0points 0points #> .. ..- attr(*, "unit")= int 8 #> ..$ debug : NULL #> ..$ inherit.blank: logi TRUE #> ..- attr(*, "class")= chr [1:2] "element_text" "element" #> $ axis.text.x.top :List of 11 #> ..$ family : NULL #> ..$ face : NULL #> ..$ colour : NULL #> ..$ size : NULL #> ..$ hjust : NULL #> ..$ vjust : num 0 #> ..$ angle : NULL #> ..$ lineheight : NULL #> ..$ margin : 'margin' num [1:4] 0points 0points 2.8points 0points #> .. ..- attr(*, "unit")= int 8 #> ..$ debug : NULL #> ..$ inherit.blank: logi TRUE #> ..- attr(*, "class")= chr [1:2] "element_text" "element" #> $ axis.text.x.bottom : NULL #> $ axis.text.y :List of 11 #> ..$ family : NULL #> ..$ face : NULL #> ..$ colour : NULL #> ..$ size : NULL #> ..$ hjust : num 1 #> ..$ vjust : num 0 #> ..$ angle : NULL #> ..$ lineheight : NULL #> ..$ margin : 'margin' num [1:4] 0points 3points 0points 0points #> .. ..- attr(*, "unit")= int 8 #> ..$ debug : NULL #> ..$ inherit.blank: logi TRUE #> ..- attr(*, "class")= chr [1:2] "element_text" "element" #> $ axis.text.y.left : NULL #> $ axis.text.y.right :List of 11 #> ..$ family : NULL #> ..$ face : NULL #> ..$ colour : NULL #> ..$ size : NULL #> ..$ hjust : num 0 #> ..$ vjust : NULL #> ..$ angle : NULL #> ..$ lineheight : NULL #> ..$ margin : 'margin' num [1:4] 0points 0points 0points 2.8points #> .. ..- attr(*, "unit")= int 8 #> ..$ debug : NULL #> ..$ inherit.blank: logi TRUE #> ..- attr(*, "class")= chr [1:2] "element_text" "element" #> $ axis.ticks :List of 6 #> ..$ colour : chr "grey90" #> ..$ size : num 0.5 #> ..$ linetype : NULL #> ..$ lineend : NULL #> ..$ arrow : logi FALSE #> ..$ inherit.blank: logi TRUE #> ..- attr(*, "class")= chr [1:2] "element_line" "element" #> $ axis.ticks.x : NULL #> $ axis.ticks.x.top : NULL #> $ axis.ticks.x.bottom : NULL #> $ axis.ticks.y :List of 6 #> ..$ colour : chr "grey90" #> ..$ size : num 0.5 #> ..$ linetype : NULL #> ..$ lineend : NULL #> ..$ arrow : logi FALSE #> ..$ inherit.blank: logi TRUE #> ..- attr(*, "class")= chr [1:2] "element_line" "element" #> $ axis.ticks.y.left : NULL #> $ axis.ticks.y.right : NULL #> $ axis.ticks.length : 'simpleUnit' num 3.5points #> ..- attr(*, "unit")= int 8 #> $ axis.ticks.length.x : NULL #> $ axis.ticks.length.x.top : NULL #> $ axis.ticks.length.x.bottom: NULL #> $ axis.ticks.length.y : NULL #> $ axis.ticks.length.y.left : NULL #> $ axis.ticks.length.y.right : NULL #> $ axis.line : list() #> ..- attr(*, "class")= chr [1:2] "element_blank" "element" #> $ axis.line.x : NULL #> $ axis.line.x.top : NULL #> $ axis.line.x.bottom : NULL #> $ axis.line.y : NULL #> $ axis.line.y.left : NULL #> $ axis.line.y.right : NULL #> $ legend.background :List of 5 #> ..$ fill : NULL #> ..$ colour : logi NA #> ..$ size : NULL #> ..$ linetype : NULL #> ..$ inherit.blank: logi TRUE #> ..- attr(*, "class")= chr [1:2] "element_rect" "element" #> $ legend.margin : 'margin' num [1:4] 7points 7points 7points 7points #> ..- attr(*, "unit")= int 8 #> $ legend.spacing : 'simpleUnit' num 14points #> ..- attr(*, "unit")= int 8 #> $ legend.spacing.x : NULL #> $ legend.spacing.y : NULL #> $ legend.key : list() #> ..- attr(*, "class")= chr [1:2] "element_blank" "element" #> $ legend.key.size : 'simpleUnit' num 1lines #> ..- attr(*, "unit")= int 3 #> $ legend.key.height : NULL #> $ legend.key.width : NULL #> $ legend.text :List of 11 #> ..$ family : NULL #> ..$ face : NULL #> ..$ colour : NULL #> ..$ size : 'rel' num 0.857 #> ..$ hjust : NULL #> ..$ vjust : NULL #> ..$ angle : NULL #> ..$ lineheight : NULL #> ..$ margin : NULL #> ..$ debug : NULL #> ..$ inherit.blank: logi TRUE #> ..- attr(*, "class")= chr [1:2] "element_text" "element" #> $ legend.text.align : NULL #> $ legend.title :List of 11 #> ..$ family : NULL #> ..$ face : NULL #> ..$ colour : NULL #> ..$ size : NULL #> ..$ hjust : num 0 #> ..$ vjust : NULL #> ..$ angle : NULL #> ..$ lineheight : NULL #> ..$ margin : NULL #> ..$ debug : NULL #> ..$ inherit.blank: logi TRUE #> ..- attr(*, "class")= chr [1:2] "element_text" "element" #> $ legend.title.align : NULL #> $ legend.position : chr "none" #> $ legend.direction : NULL #> $ legend.justification : chr [1:2] "left" "center" #> $ legend.box : NULL #> $ legend.box.just : NULL #> $ legend.box.margin : 'margin' num [1:4] 0cm 0cm 0cm 0cm #> ..- attr(*, "unit")= int 1 #> $ legend.box.background : list() #> ..- attr(*, "class")= chr [1:2] "element_blank" "element" #> $ legend.box.spacing : 'simpleUnit' num 14points #> ..- attr(*, "unit")= int 8 #> $ panel.background : list() #> ..- attr(*, "class")= chr [1:2] "element_blank" "element" #> $ panel.border : list() #> ..- attr(*, "class")= chr [1:2] "element_blank" "element" #> $ panel.spacing : 'simpleUnit' num 7points #> ..- attr(*, "unit")= int 8 #> $ panel.spacing.x : NULL #> $ panel.spacing.y : NULL #> $ panel.grid :List of 6 #> ..$ colour : chr "white" #> ..$ size : NULL #> ..$ linetype : NULL #> ..$ lineend : NULL #> ..$ arrow : logi FALSE #> ..$ inherit.blank: logi TRUE #> ..- attr(*, "class")= chr [1:2] "element_line" "element" #> $ panel.grid.major :List of 6 #> ..$ colour : chr "grey90" #> ..$ size : num 0.5 #> ..$ linetype : NULL #> ..$ lineend : NULL #> ..$ arrow : logi FALSE #> ..$ inherit.blank: logi TRUE #> ..- attr(*, "class")= chr [1:2] "element_line" "element" #> $ panel.grid.minor : list() #> ..- attr(*, "class")= chr [1:2] "element_blank" "element" #> $ panel.grid.major.x : NULL #> $ panel.grid.major.y : NULL #> $ panel.grid.minor.x : NULL #> $ panel.grid.minor.y : NULL #> $ panel.ontop : logi FALSE #> $ plot.background : list() #> ..- attr(*, "class")= chr [1:2] "element_blank" "element" #> $ plot.title :List of 11 #> ..$ family : NULL #> ..$ face : chr "bold" #> ..$ colour : NULL #> ..$ size : num 14 #> ..$ hjust : num 0 #> ..$ vjust : NULL #> ..$ angle : NULL #> ..$ lineheight : NULL #> ..$ margin : 'margin' num [1:4] 0points 0points 7points 0points #> .. ..- attr(*, "unit")= int 8 #> ..$ debug : NULL #> ..$ inherit.blank: logi TRUE #> ..- attr(*, "class")= chr [1:2] "element_text" "element" #> $ plot.title.position : chr "panel" #> $ plot.subtitle :List of 11 #> ..$ family : NULL #> ..$ face : NULL #> ..$ colour : NULL #> ..$ size : 'rel' num 0.857 #> ..$ hjust : num 0 #> ..$ vjust : num 1 #> ..$ angle : NULL #> ..$ lineheight : NULL #> ..$ margin : 'margin' num [1:4] 0points 0points 6points 0points #> .. ..- attr(*, "unit")= int 8 #> ..$ debug : NULL #> ..$ inherit.blank: logi TRUE #> ..- attr(*, "class")= chr [1:2] "element_text" "element" #> $ plot.caption :List of 11 #> ..$ family : NULL #> ..$ face : NULL #> ..$ colour : NULL #> ..$ size : 'rel' num 0.857 #> ..$ hjust : num 1 #> ..$ vjust : num 1 #> ..$ angle : NULL #> ..$ lineheight : NULL #> ..$ margin : 'margin' num [1:4] 6points 0points 0points 0points #> .. ..- attr(*, "unit")= int 8 #> ..$ debug : NULL #> ..$ inherit.blank: logi TRUE #> ..- attr(*, "class")= chr [1:2] "element_text" "element" #> $ plot.caption.position : chr "panel" #> $ plot.tag :List of 11 #> ..$ family : NULL #> ..$ face : NULL #> ..$ colour : NULL #> ..$ size : 'rel' num 1.2 #> ..$ hjust : num 0.5 #> ..$ vjust : num 0.5 #> ..$ angle : NULL #> ..$ lineheight : NULL #> ..$ margin : NULL #> ..$ debug : NULL #> ..$ inherit.blank: logi TRUE #> ..- attr(*, "class")= chr [1:2] "element_text" "element" #> $ plot.tag.position : chr "topleft" #> $ plot.margin : 'margin' num [1:4] 7points 14points 7points 7points #> ..- attr(*, "unit")= int 8 #> $ strip.background :List of 5 #> ..$ fill : chr "grey80" #> ..$ colour : chr "grey50" #> ..$ size : num 0 #> ..$ linetype : NULL #> ..$ inherit.blank: logi TRUE #> ..- attr(*, "class")= chr [1:2] "element_rect" "element" #> $ strip.background.x : NULL #> $ strip.background.y : NULL #> $ strip.placement : chr "inside" #> $ strip.text :List of 11 #> ..$ family : NULL #> ..$ face : NULL #> ..$ colour : NULL #> ..$ size : 'rel' num 0.857 #> ..$ hjust : NULL #> ..$ vjust : NULL #> ..$ angle : NULL #> ..$ lineheight : NULL #> ..$ margin : NULL #> ..$ debug : NULL #> ..$ inherit.blank: logi TRUE #> ..- attr(*, "class")= chr [1:2] "element_text" "element" #> $ strip.text.x : NULL #> $ strip.text.y :List of 11 #> ..$ family : NULL #> ..$ face : NULL #> ..$ colour : NULL #> ..$ size : NULL #> ..$ hjust : NULL #> ..$ vjust : NULL #> ..$ angle : num -90 #> ..$ lineheight : NULL #> ..$ margin : NULL #> ..$ debug : NULL #> ..$ inherit.blank: logi TRUE #> ..- attr(*, "class")= chr [1:2] "element_text" "element" #> $ strip.switch.pad.grid : 'simpleUnit' num 3.5points #> ..- attr(*, "unit")= int 8 #> $ strip.switch.pad.wrap : 'simpleUnit' num 3.5points #> ..- attr(*, "unit")= int 8 #> $ strip.text.y.left :List of 11 #> ..$ family : NULL #> ..$ face : NULL #> ..$ colour : NULL #> ..$ size : NULL #> ..$ hjust : NULL #> ..$ vjust : NULL #> ..$ angle : num 90 #> ..$ lineheight : NULL #> ..$ margin : NULL #> ..$ debug : NULL #> ..$ inherit.blank: logi TRUE #> ..- attr(*, "class")= chr [1:2] "element_text" "element" #> - attr(*, "class")= chr [1:2] "theme" "gg" #> - attr(*, "complete")= logi TRUE #> - attr(*, "validate")= logi TRUEcount_data <- data.frame( group = rep(letters[1:5], each = 10), mean = rep(1:5, each = 10) ) count_data$group <- factor(count_data$group, levels = letters[5:1]) count_data$count <- rpois(nrow(count_data), count_data$mean) ggplot(count_data, aes(x = count, y = group, group = group)) + geom_density_ridges2( stat = "binline", aes(fill = group), binwidth = 1, scale = 0.95 ) + geom_text( stat = "bin", aes(y = group + 0.9*stat(count/max(count)), label = ifelse(stat(count) > 0, stat(count), "")), vjust = 1.2, size = 3, color = "white", binwidth = 1 ) + scale_x_continuous(breaks = c(0:12), limits = c(-.5, 13), expand = c(0, 0)) + scale_y_discrete(expand = c(0, 0)) + scale_fill_cyclical(values = c("#0000B0", "#7070D0")) + guides(y = "none") + coord_cartesian(clip = "off") + theme_ridges(grid = FALSE)