position_jitternormal: Jitter points with normally distributed random noise In ggforce: Accelerating 'ggplot2'

Description

ggplot2::geom_jitter() adds random noise to points using a uniform distribution. When many points are plotted, they appear in a rectangle. This position jitters points using a normal distribution instead, resulting in more circular clusters.

Usage

 1 position_jitternormal(sd_x = NULL, sd_y = NULL)

Arguments

 sd_x, sd_y Standard deviation to add along the x and y axes. The function uses stats::rnorm() with mean = 0 behind the scenes. If omitted, defaults to 0.15. As with ggplot2::geom_jitter(), categorical data is aligned on the integers, so a standard deviation of more than 0.2 will spread the data so it's not possible to see the distinction between the categories.

Examples

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 # Example data df <- data.frame( x = sample(1:3, 1500, TRUE), y = sample(1:3, 1500, TRUE) ) # position_jitter results in rectangular clusters ggplot(df, aes(x = x, y = y)) + geom_point(position = position_jitter()) # geom_jitternormal results in more circular clusters ggplot(df, aes(x = x, y = y)) + geom_point(position = position_jitternormal()) # You can adjust the standard deviations along both axes # Tighter circles ggplot(df, aes(x = x, y = y)) + geom_point(position = position_jitternormal(sd_x = 0.08, sd_y = 0.08)) # Oblong shapes ggplot(df, aes(x = x, y = y)) + geom_point(position = position_jitternormal(sd_x = 0.2, sd_y = 0.08)) # Only add random noise to one dimension ggplot(df, aes(x = x, y = y)) + geom_point( position = position_jitternormal(sd_x = 0.15, sd_y = 0), alpha = 0.1 )

Example output     