--- title: "Rose diagrams" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Rose diagrams} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set(collapse = TRUE, comment = "#>", fig.width = 7, fig.height = 5) ``` # 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. ```{r} 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. ```{r} 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()`. ```{r} 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. ```{r} 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. ```{r} 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)`. ```{r} 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.