ggpointless
is an extension of the ggplot2
library providing additional layers.
You can install ggpointless
from CRAN with:
install.packages("ggpointless")
To install the development version from GitHub use:
# install.packages("devtools") devtools::install_github("flrd/ggpointless")
Once you have installed the package, attach it by calling:
geom_pointless()
– emphasizes some observations with pointsgeom_lexis()
– draws a Lexis diagramgeom_chaikin()
– applies Chaikin’s corner cutting algorithmgeom_catenary()
– draws a catenary curveSee vignette("ggpointless")
for details and examples.
geom_pointless()
let’s you highlight the first, or last observations, sample minimum and sample maximum to provide additional context. Or just some visual sugar. geom_pointless()
behaves similar to geom_point()
except that it has a location
argument. You can set it to "first"
, "last"
(default), "minimum"
, "maximum"
, and "all"
, where "all"
is just shorthand to select "first"
, "last"
, "minimum"
and "maximum"
.
cols <- c("#f4ae1b", "#d77e7b", "#a84dbd", "#311dfc") theme_set(theme_minimal()) x <- seq(-pi, pi, length.out = 500) y <- outer(x, 1:5, function(x, y) sin(x * y)) df1 <- data.frame( var1 = x, var2 = rowSums(y) ) ggplot(df1, aes(x = var1, y = var2)) + geom_line() + geom_pointless(aes(color = after_stat(location)), location = "all", size = 3 ) + scale_color_manual(values = cols)
geom_lexis()
is a combination of a segment and a point layer. Given a start value and an end value, this function draws a 45° line which indicates the duration of an event. Required are x
and xend
aesthetics, y
and yend
coordinates will be calculated.
df2 <- data.frame( key = c("A", "B", "B", "C", "D"), x = c(0, 1, 6, 5, 6), xend = c(5, 4, 10, 8, 10) ) ggplot(df2, aes(x = x, xend = xend, color = key)) + geom_lexis(aes(linetype = after_stat(type)), size = 2) + coord_equal() + scale_x_continuous(breaks = c(df2$x, df2$xend)) + scale_color_manual(values = cols) + scale_linetype_identity() + theme(panel.grid.minor = element_blank())
See also the LexisPlotR
package.
Chaikin’s corner cutting algorithm let’s you turn a ragged path or polygon into a smoothed one. Credit to Farbfetzen / corner_cutting.
lst <- list( data = list( closed_square = data.frame(x = c(0, 0, 1, 1), y = c(2, 3, 3, 2)), whale = data.frame(x = c(.5, 4, 4, 3.5, 2), y = c(.5, 1, 1.5, .5, 3)), open_triangle = data.frame(x = c(3, 3, 5), y = c(2, 3, 3)), closed_triangle = data.frame(x = c(3.5, 5, 5), y = c(0, 0, 1.5)) ), color = cols, closed = c(TRUE, TRUE, FALSE, TRUE) ) ggplot(mapping = aes(x, y)) + lapply(lst$data, function(i) { geom_polygon(data = i, fill = NA, linetype = "12", color = "#777777") }) + Map(f = function(data, color, closed) { geom_chaikin(data = data, color = color, closed = closed) }, data = lst$data, color = lst$color, closed = lst$closed) + geom_point(data = data.frame(x = 1.5, y = 1.5)) + coord_equal()
See also the smoothr
package.
Draws a flexible curve that simulates a chain or rope hanging loosely between two fixed points. By default, a chain length twice the Euclidean distance between each x/y combination is used. See vignette("ggpointless")
for details.
Credit to: dulnan/catenary-curve
ggplot(data.frame(x = 1:5, y = sample(5)), aes(x, y)) + geom_catenary() + geom_point(size = 3, colour = "#f4ae1b") #> Set chainLength to 23.7
In addition to the geoms & stats, the following data sets are contained in ggpointless
:
co2_ml
: CO2 records taken at Mauna Loacovid_vac
: COVID-19 Cases and Deaths by Vaccination Statusfemale_leaders
: Elected and appointed female heads of state and governmentFor more examples call vignette("examples")
.
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4