The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.

Rose diagrams

Definition

A rose diagram is a circular histogram. Angles are grouped into bins around a periodic interval, and bin frequencies are displayed radially.

Linear versus circular histograms

The discontinuity between 0 and 2 * pi is artificial. A circular display places these two values next to each other.

library(ggplot2)
library(ggcircular)

ggplot(wind_directions, aes(x = direction)) +
  geom_rose(bins = 16) +
  scale_x_circular_degrees() +
  coord_circular() +
  theme_rose()

Choosing the number of bins

Fewer bins emphasize broad directional patterns. More bins reveal local structure but increase sampling variability.

ggplot(wind_directions, aes(x = direction)) +
  geom_rose(bins = 32) +
  scale_x_circular_degrees() +
  coord_circular() +
  theme_rose()

Counts, densities and proportions

The normalize argument controls the computed radial variable. The computed variables are also available through after_stat().

ggplot(wind_directions, aes(x = direction)) +
  geom_rose(aes(fill = after_stat(proportion)), bins = 16, normalize = "proportion") +
  scale_x_circular_degrees() +
  coord_circular() +
  theme_rose()

Area versus radius

When area = TRUE, the displayed radial height is square-root transformed. This can help when comparing frequencies by visual area.

ggplot(wind_directions, aes(x = direction)) +
  geom_rose(bins = 16, area = TRUE) +
  scale_x_circular_degrees() +
  coord_circular() +
  theme_rose()

Groups and facets

Groups can be represented with fill, colour or facets.

ggplot(wind_directions, aes(x = direction, fill = season)) +
  geom_rose(bins = 16, alpha = 0.7) +
  facet_wrap(~ season) +
  scale_x_circular_degrees() +
  coord_circular() +
  theme_rose()

Axial data

For axial data, use axial = TRUE and a scale limit of c(0, pi).

ggplot(axial_orientations, aes(x = orientation, fill = group)) +
  geom_rose(bins = 18, axial = TRUE) +
  scale_x_circular_degrees(limits = c(0, pi)) +
  coord_circular() +
  theme_rose()

Interpretation

Rose diagrams are descriptive. Apparent modes can depend on the bin origin and number of bins, so they should often be paired with a density estimate or summary statistic.

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.