Skip to contents

Polar co-ordinates in `ggplot2` help to create a range of circular plots, which can be used to present data in a visually appealing, user-friendly way. However, the standard `coord_polar` uses a `textGrob` to render the labels on the circumferential (theta) axis, meaning that labels do not rotate or curve in line with the axis. `coord_curvedpolar` aims to be identical to `coord_polar`, except that the text on the theta axis follows the curve of the plot, correcting automatically for resizing to preserve letter spacing and size.

Usage

coord_curvedpolar(
  theta = "x",
  start = 0,
  direction = 1,
  clip = "on",
  halign = c("center")
)

Arguments

theta

variable to map angle to (`x` or `y`)

start

Offset of starting point from 12 o'clock in radians. Offset is applied clockwise or anticlockwise depending on value of `direction`.

direction

1, clockwise; -1, anticlockwise

clip

Should drawing be clipped to the extent of the plot panel? A setting of `"on"` (the default) means yes, and a setting of `"off"` means no. For details, please see [`coord_cartesian()`].

halign

A character(1) describing how multi-line text should be justified. Can either be "center" (default), "left" or "right".

Value

A `Coord` ggproto object that can be added to a plot.

Examples


# A pie chart = stacked bar chart + polar coordinates
pie <- ggplot(mtcars, aes(x = factor(1), fill = factor(cyl))) +
 geom_bar(width = 1)
 pie + coord_curvedpolar(theta = "y")


# Demonstrating curved category labels
p <- ggplot(data.frame(x = paste("Category label", 1:5), y = runif(5)),
            aes(x, y, fill = x)) +
       geom_col() +
       theme_bw() +
       theme(panel.border = element_blank(),
             legend.position = "none",
             axis.text.x = element_text(size = 10, vjust = 0.5))

# Standard bar chart in Cartesian Co-ordinates
p


# Standard coord_polar axis labels
p + coord_polar()


# Curved polar co-ordinate labels
p + coord_curvedpolar()