Title: | A Cross Between a 2D Density Plot and a Scatter Plot |
---|---|
Description: | A cross between a 2D density plot and a scatter plot, implemented as a 'ggplot2' geom. Points in the scatter plot are colored by the number of neighboring points. This is useful to visualize the 2D-distribution of points in case of overplotting. |
Authors: | Lukas P. M. Kremer [aut, cre] |
Maintainer: | Lukas P. M. Kremer <[email protected]> |
License: | GPL-3 | file LICENSE |
Version: | 0.1.0 |
Built: | 2025-03-12 05:47:07 UTC |
Source: | https://github.com/lkremer/ggpointdensity |
The pointdensity geom is used to create scatterplots where each point is colored by the number of neighboring points. This is useful to visualize the 2D-distribution of points in case of overplotting.
geom_pointdensity(mapping = NULL, data = NULL, stat = "pointdensity", position = "identity", ..., na.rm = FALSE, show.legend = NA, inherit.aes = TRUE)
geom_pointdensity(mapping = NULL, data = NULL, stat = "pointdensity", position = "identity", ..., 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 |
stat |
The statistical transformation to use on the data for this layer, as a string. |
position |
Position adjustment, either as a string, or the result of a call to a position adjustment function. |
... |
Other arguments passed on to |
na.rm |
If |
show.legend |
logical. Should this layer be included in the legends?
|
inherit.aes |
If |
Lukas P.M. Kremer
https://GitHub.com/LKremer/ggpointdensity
library(ggplot2) library(dplyr) library(ggpointdensity) # generate some toy data dat <- bind_rows( tibble(x = rnorm(7000, sd = 1), y = rnorm(7000, sd = 10), group = "foo"), tibble(x = rnorm(3000, mean = 1, sd = .5), y = rnorm(3000, mean = 7, sd = 5), group = "bar")) # plot it with geom_pointdensity() ggplot(data = dat, mapping = aes(x = x, y = y)) + geom_pointdensity() # adjust the smoothing bandwidth, # i.e. the radius around the points # in which neighbors are counted ggplot(data = dat, mapping = aes(x = x, y = y)) + geom_pointdensity(adjust = .1) ggplot(data = dat, mapping = aes(x = x, y = y)) + geom_pointdensity(adjust = 4) ggplot(data = dat, mapping = aes(x = x, y = y)) + geom_pointdensity(adjust = 4) + scale_colour_continuous(low = "red", high = "black") # I recommend the viridis package # for a more useful color scale library(viridis) ggplot(data = dat, mapping = aes(x = x, y = y)) + geom_pointdensity() + scale_color_viridis() # Of course you can combine the geom with standard # ggplot2 features such as facets... ggplot(data = dat, mapping = aes(x = x, y = y)) + geom_pointdensity() + scale_color_viridis() + facet_wrap( ~ group) # ... or point shape and size: dat_subset <- sample_frac(dat, .1) # smaller data set ggplot(data = dat_subset, mapping = aes(x = x, y = y)) + geom_pointdensity(size = 3, shape = 17) + scale_color_viridis() # Zooming into the axis works as well, keep in mind # that xlim() and ylim() change the density since they # remove data points. # It may be better to use `coord_cartesian()` instead. ggplot(data = dat, mapping = aes(x = x, y = y)) + geom_pointdensity() + scale_color_viridis() + xlim(c(-1, 3)) + ylim(c(-5, 15)) ggplot(data = dat, mapping = aes(x = x, y = y)) + geom_pointdensity() + scale_color_viridis() + coord_cartesian(xlim = c(-1, 3), ylim = c(-5, 15))
library(ggplot2) library(dplyr) library(ggpointdensity) # generate some toy data dat <- bind_rows( tibble(x = rnorm(7000, sd = 1), y = rnorm(7000, sd = 10), group = "foo"), tibble(x = rnorm(3000, mean = 1, sd = .5), y = rnorm(3000, mean = 7, sd = 5), group = "bar")) # plot it with geom_pointdensity() ggplot(data = dat, mapping = aes(x = x, y = y)) + geom_pointdensity() # adjust the smoothing bandwidth, # i.e. the radius around the points # in which neighbors are counted ggplot(data = dat, mapping = aes(x = x, y = y)) + geom_pointdensity(adjust = .1) ggplot(data = dat, mapping = aes(x = x, y = y)) + geom_pointdensity(adjust = 4) ggplot(data = dat, mapping = aes(x = x, y = y)) + geom_pointdensity(adjust = 4) + scale_colour_continuous(low = "red", high = "black") # I recommend the viridis package # for a more useful color scale library(viridis) ggplot(data = dat, mapping = aes(x = x, y = y)) + geom_pointdensity() + scale_color_viridis() # Of course you can combine the geom with standard # ggplot2 features such as facets... ggplot(data = dat, mapping = aes(x = x, y = y)) + geom_pointdensity() + scale_color_viridis() + facet_wrap( ~ group) # ... or point shape and size: dat_subset <- sample_frac(dat, .1) # smaller data set ggplot(data = dat_subset, mapping = aes(x = x, y = y)) + geom_pointdensity(size = 3, shape = 17) + scale_color_viridis() # Zooming into the axis works as well, keep in mind # that xlim() and ylim() change the density since they # remove data points. # It may be better to use `coord_cartesian()` instead. ggplot(data = dat, mapping = aes(x = x, y = y)) + geom_pointdensity() + scale_color_viridis() + xlim(c(-1, 3)) + ylim(c(-5, 15)) ggplot(data = dat, mapping = aes(x = x, y = y)) + geom_pointdensity() + scale_color_viridis() + coord_cartesian(xlim = c(-1, 3), ylim = c(-5, 15))