Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://flrd.github.io/ggpointless/
A Collection of Geometries, and Stats for 'ggplot2'
https://flrd.github.io/ggpointless/
data-visualization ggplot2 r rstats
Last synced: 2 days ago
JSON representation
A Collection of Geometries, and Stats for 'ggplot2'
- Host: GitHub
- URL: https://flrd.github.io/ggpointless/
- Owner: flrd
- License: other
- Created: 2022-01-25T11:15:10.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-07-24T14:50:50.000Z (4 months ago)
- Last Synced: 2024-09-25T21:44:22.273Z (about 2 months ago)
- Topics: data-visualization, ggplot2, r, rstats
- Language: R
- Homepage: https://flrd.github.io/ggpointless/
- Size: 21.8 MB
- Stars: 2
- Watchers: 2
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.Rmd
- Changelog: NEWS.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
---
output: github_document
---```{r setup, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/README-",
out.width = "100%",
fig.align = "center",
fig.height = 3,
dev = "ragg_png",
dpi = 132
)library(ggpointless)
```[![CRAN status](https://www.r-pkg.org/badges/version/ggpointless)](https://CRAN.R-project.org/package=ggpointless)
[![R-CMD-check](https://github.com/flrd/ggpointless/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/flrd/ggpointless/actions/workflows/R-CMD-check.yaml)
[![Codecov test coverage](https://codecov.io/gh/flrd/ggpointless/branch/main/graph/badge.svg)](https://app.codecov.io/gh/flrd/ggpointless?branch=main)
![downloads](https://cranlogs.r-pkg.org/badges/grand-total/ggpointless))`ggpointless` is an extension of the [`ggplot2`](https://ggplot2.tidyverse.org/) library providing additional layers.
## Installation
You can install `ggpointless` from CRAN with:
```{r eval=FALSE}
install.packages("ggpointless")
```To install the development version from [GitHub](https://github.com/) use:
``` {r eval=FALSE}
# install.packages("devtools")
devtools::install_github("flrd/ggpointless")
```Once you have installed the package, attach it by calling:
```{r}
library(ggpointless)
```## What will you get
- `geom_pointless()` -- emphasizes some observations with points
- `geom_lexis()` -- draws a Lexis diagram
- `geom_chaikin()` -- applies Chaikin's corner cutting algorithm
- `geom_catenary()` -- draws a catenary curveSee [`vignette("ggpointless")`](https://flrd.github.io/ggpointless/articles/ggpointless.html)
for details and examples.### geom_pointless
`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"`.```{r hello-world}
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
`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.```{r geom-lexis, warning=FALSE}
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](https://github.com/ottlngr/LexisPlotR).
### geom_chaikin
Chaikin's corner cutting algorithm let's you turn a ragged path or polygon into a smoothed one. Credit to [Farbfetzen / corner_cutting](https://github.com/Farbfetzen/corner_cutting).
```{r geom-chaikin, warning=FALSE}
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](https://github.com/mstrimas/smoothr/).
### geom_catenary
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")`](https://flrd.github.io/ggpointless/articles/ggpointless.html)
for details.Credit to: [dulnan/catenary-curve](https://github.com/dulnan/catenary-curve)
```{r geom-catenary, warning=FALSE}
ggplot(data.frame(x = 1:5, y = sample(5)),
aes(x, y)) +
geom_catenary() +
geom_point(size = 3, colour = "#f4ae1b")
```## Data
In addition to the geoms & stats, the following data sets are contained in `ggpointless`:
1. `co2_ml` : [CO~2~ records taken at Mauna Loa](https://gml.noaa.gov/ccgg/trends/data.html)
2. `covid_vac` : [COVID-19 Cases and Deaths by Vaccination Status](https://covid.cdc.gov/covid-data-tracker/#rates-by-vaccine-status)
3. `female_leaders` : [Elected and appointed female heads of state and government](https://en.wikipedia.org/w/index.php?title=List_of_elected_and_appointed_female_heads_of_state_and_government&oldid=1078024588)For more examples call [`vignette("examples")`](https://flrd.github.io/ggpointless/articles/examples.html).
## Code of Conduct
Please note that this project is released with a [Contributor Code of Conduct](https://github.com/flrd/ggpointless/blob/main/CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms.