Count the number of observations at each location.

Usage

geom_count(mapping = NULL, data = NULL, stat = "sum", position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, ...)
stat_sum(mapping = NULL, data = NULL, geom = "point", position = "identity", show.legend = NA, inherit.aes = TRUE, ...)

Arguments

mapping
Set of aesthetic mappings created by aes or aes_. If specified and inherit.aes = TRUE (the default), is combined with the default mapping at the top level of the plot. You only need to supply mapping if there isn't a mapping defined for the plot.
data
A data frame. If specified, overrides the default data frame defined at the top level of the plot.
position
Position adjustment, either as a string, or the result of a call to a position adjustment function.
na.rm
If FALSE (the default), removes missing values with a warning. If TRUE silently removes missing values.
show.legend
logical. Should this layer be included in the legends? NA, the default, includes if any aesthetics are mapped. FALSE never includes, and TRUE always includes.
inherit.aes
If FALSE, overrides the default aesthetics, rather than combining with them. This is most useful for helper functions that define both data and aesthetics and shouldn't inherit behaviour from the default plot specification, e.g. borders.
...
other arguments passed on to layer. There are three types of arguments you can use here:
  • Aesthetics: to set an aesthetic to a fixed value, like color = "red" or size = 3.
  • Other arguments to the layer, for example you override the default stat associated with the layer.
  • Other arguments passed on to the stat.
geom,stat
Use to override the default connection between geom_count and stat_sum.

Description

This is a variant geom_point that counts the number of observations at each location, then maps the count to point size. It useful when you have discrete data.

Aesthetics

geom_point understands the following aesthetics (required aesthetics are in bold):

  • x
  • y
  • alpha
  • colour
  • fill
  • shape
  • size
  • stroke

Computed variables

n
number of observations at position

prop
percent of points in that panel at that position

Examples

ggplot(mpg, aes(cty, hwy)) + geom_point()

ggplot(mpg, aes(cty, hwy)) + geom_count()

# Best used in conjunction with scale_size_area which ensures that # counts of zero would be given size 0. Doesn't make much different # here because the smallest count is already close to 0. ggplot(mpg, aes(cty, hwy)) + geom_count()

scale_size_area()
<ggproto object: Class ScaleContinuous, Scale> aesthetics: size break_info: function break_positions: function breaks: waiver call: call clone: function dimension: function expand: waiver get_breaks: function get_breaks_minor: function get_labels: function get_limits: function guide: legend is_discrete: function is_empty: function labels: waiver limits: NULL map: function map_df: function minor_breaks: waiver na.value: NA name: waiver oob: function palette: function range: <ggproto object: Class RangeContinuous, Range> range: NULL reset: function train: function super: <ggproto object: Class RangeContinuous, Range> rescaler: function reset: function scale_name: area train: function train_df: function trans: trans transform: function transform_df: function super: <ggproto object: Class ScaleContinuous, Scale>
# Display proportions instead of counts ------------------------------------- # By default, all categorical variables in the plot form the groups. # Specifying geom_count without a group identifier leads to a plot which is # not useful: d <- ggplot(diamonds, aes(x = cut, y = clarity)) d + geom_count(aes(size = ..prop..))

# To correct this problem and achieve a more desirable plot, we need # to specify which group the proportion is to be calculated over. d + geom_count(aes(size = ..prop.., group = 1)) + scale_size_area(max_size = 10)

# Or group by x/y variables to have rows/columns sum to 1. d + geom_count(aes(size = ..prop.., group = cut)) + scale_size_area(max_size = 10)

d + geom_count(aes(size = ..prop.., group = clarity)) + scale_size_area(max_size = 10)