ggcircular is a ggplot2 extension for visualizing circular, axial, and directional data. The package provides geoms, stats, scales, and themes for angles, orientations, times of day, movement directions, and circular distributions.
CRAN version: 0.1.0, published on June 4, 2026.
The GitHub development version 0.2.0 also includes circular-linear and circular-circular displays on cylinders and tori. These extensions belong to the development version.
Associated article
Nicosia, A. (2026). Visualizing directional dependence on cylinders and tori. Journal of Data Science, Statistics, and Visualisation, 6(7). Published October 1, 2026. Article and DOI.
Visual preview
Usage example
The code below follows the package quick start: it displays winter wind directions with a rose diagram, a circular density estimate, and a mean direction.
# Load libraries
library(ggplot2)
library(dplyr)
library(ggcircular)
# Plot winter wind directions
wind_directions |>
filter(season == "winter") |>
ggplot(aes(x = direction)) +
geom_rose(
aes(y = after_stat(density), fill = after_stat(density)),
bins = 24,
alpha = 0.78
) +
geom_circular_density(linewidth = 1.1, colour = "#123C4A") +
geom_mean_direction(
length = "resultant",
colour = "#E4572E",
linewidth = 1.1
) +
scale_x_circular_compass() +
coord_circular(zero = "north", direction = "clockwise") +
labs(fill = "density", title = "Winter wind directions") +
theme_circular()What is ggcircular for?
- creating rose diagrams and circular histograms;
- estimating and displaying circular densities;
- showing mean directions, confidence arcs, and theoretical distributions;
- producing reproducible
ggplot2graphics for periodic, axial, or directional data.