Visualization · Geometry · R

ggcircular

Visualize directional data.

A ggplot2 extension for circular, axial and directional data.

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 ggplot2 graphics for periodic, axial, or directional data.