| Title: | Chord Diagrams with 'ggplot2' |
|---|---|
| Description: | A 'ggplot2' extension that provides functions for drawing chord diagrams for visualising flows between categories. The package extends 'ggplot2' by adding geoms and stats for drawing chord sectors, arcs, and labels. |
| Authors: | Nicola Rennie [aut, cre, cph] |
| Maintainer: | Nicola Rennie <[email protected]> |
| License: | MIT + file LICENSE |
| Version: | 0.0.1 |
| Built: | 2026-07-11 10:52:57 UTC |
| Source: | https://github.com/cran/ggchord2 |
Chord diagram arc ribbons Draws the ribbon (arc) layer of a chord diagram.
geom_chord_arcs( mapping = NULL, data = NULL, stat = "chord", position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, gap_degree = 2, start_degree = 90, direction = 1, inner_radius = 0.6, outer_radius = 0.75, n_bezier = 100, ... )geom_chord_arcs( mapping = NULL, data = NULL, stat = "chord", position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, gap_degree = 2, start_degree = 90, direction = 1, inner_radius = 0.6, outer_radius = 0.75, n_bezier = 100, ... )
mapping |
Set of aesthetic mappings created by |
data |
The data to be displayed in this layer. There are three options: If A A |
stat |
The statistical transformation to use on the data for this layer.
When using a
|
position |
A position adjustment to use on the data for this layer. This
can be used in various ways, including to prevent overplotting and
improving the display. The
|
na.rm |
If |
show.legend |
logical. Should this layer be included in the legends?
|
inherit.aes |
If |
gap_degree |
Degrees of blank space between adjacent sectors. Default 2. |
start_degree |
Angle (degrees) of the first sector's start edge. Default 90. |
direction |
1 = counter-clockwise sectors (default), -1 = clockwise. |
inner_radius |
Radius of the inner circle (0–1 coordinate space). Default 0.6. |
outer_radius |
Radius of the outer circle (0–1 coordinate space). Default 0.75. |
n_bezier |
Number of points used to approximate each Bézier / arc curve. Default 100. |
... |
Other arguments passed on to
|
A ggplot2 layer.
library(ggplot2) flows <- data.frame( source = c("A", "A", "B", "B", "C", "C"), target = c("B", "C", "A", "C", "A", "B"), freq = c(50, 30, 60, 25, 35, 20) ) ggplot( data = flows, mapping = aes( source = source, target = target, freq = freq ) ) + geom_chord_arcs()library(ggplot2) flows <- data.frame( source = c("A", "A", "B", "B", "C", "C"), target = c("B", "C", "A", "C", "A", "B"), freq = c(50, 30, 60, 25, 35, 20) ) ggplot( data = flows, mapping = aes( source = source, target = target, freq = freq ) ) + geom_chord_arcs()
Chord Diagram
geom_chord_diagram( mapping = NULL, data = NULL, gap_degree = 2, start_degree = 90, direction = 1, inner_radius = 0.6, outer_radius = 0.75, n_bezier = 100, show_labels = TRUE, arc_params = list(), sector_params = list(), label_params = list() )geom_chord_diagram( mapping = NULL, data = NULL, gap_degree = 2, start_degree = 90, direction = 1, inner_radius = 0.6, outer_radius = 0.75, n_bezier = 100, show_labels = TRUE, arc_params = list(), sector_params = list(), label_params = list() )
mapping |
A |
data |
Data frame. If |
gap_degree |
Degrees of gap between sectors (default 2). |
start_degree |
Starting angle in degrees for the first sector (default 90). |
direction |
1 = counter-clockwise (default), -1 = clockwise. |
inner_radius |
Normalised inner radius of the sector ring (default 0.6). |
outer_radius |
Normalised outer radius of the sector ring (default 0.75). |
n_bezier |
Smoothness: number of points per curve (default 100). |
show_labels |
Logical. Draw node labels? Default |
arc_params |
Named list of additional parameters passed to |
sector_params |
Named list of additional parameters passed to |
label_params |
Named list of additional parameters passed to |
A list of ggplot2 layers
geom_chord_diagram() understands the following aesthetics
(required in **bold**):
source – name of the originating node
target – name of the receiving node
freq – numeric flow / weight
fill – fill colour of ribbons / sectors
colour – border colour
alpha – transparency (default 0.6 for ribbons, 1 for sectors)
linewidth – border line width
library(ggplot2) flows <- data.frame( source = c("A", "A", "B", "B", "C", "C"), target = c("B", "C", "A", "C", "A", "B"), freq = c(50, 30, 60, 25, 35, 20) ) ggplot( data = flows, mapping = aes( source = source, target = target, freq = freq ) ) + geom_chord_diagram()library(ggplot2) flows <- data.frame( source = c("A", "A", "B", "B", "C", "C"), target = c("B", "C", "A", "C", "A", "B"), freq = c(50, 30, 60, 25, 35, 20) ) ggplot( data = flows, mapping = aes( source = source, target = target, freq = freq ) ) + geom_chord_diagram()
Chord diagram horizontal node labels Draws horizontal text labels outside the sector bands.
geom_chord_labels( mapping = NULL, data = NULL, stat = "chord", position = "identity", na.rm = FALSE, show.legend = FALSE, inherit.aes = TRUE, gap_degree = 2, start_degree = 90, direction = 1, inner_radius = 0.6, outer_radius = 0.75, n_bezier = 100, ... )geom_chord_labels( mapping = NULL, data = NULL, stat = "chord", position = "identity", na.rm = FALSE, show.legend = FALSE, inherit.aes = TRUE, gap_degree = 2, start_degree = 90, direction = 1, inner_radius = 0.6, outer_radius = 0.75, n_bezier = 100, ... )
mapping |
Set of aesthetic mappings created by |
data |
The data to be displayed in this layer. There are three options: If A A |
stat |
The statistical transformation to use on the data for this layer.
When using a
|
position |
A position adjustment to use on the data for this layer. This
can be used in various ways, including to prevent overplotting and
improving the display. The
|
na.rm |
If |
show.legend |
logical. Should this layer be included in the legends?
|
inherit.aes |
If |
gap_degree |
Degrees of blank space between adjacent sectors. Default 2. |
start_degree |
Angle (degrees) of the first sector's start edge. Default 90. |
direction |
1 = counter-clockwise sectors (default), -1 = clockwise. |
inner_radius |
Radius of the inner circle (0–1 coordinate space). Default 0.6. |
outer_radius |
Radius of the outer circle (0–1 coordinate space). Default 0.75. |
n_bezier |
Number of points used to approximate each Bézier / arc curve. Default 100. |
... |
Other arguments passed on to
|
A ggplot2 layer.
library(ggplot2) flows <- data.frame( source = c("A", "A", "B", "B", "C", "C"), target = c("B", "C", "A", "C", "A", "B"), freq = c(50, 30, 60, 25, 35, 20) ) ggplot( data = flows, mapping = aes( source = source, target = target, freq = freq ) ) + geom_chord_sectors() + geom_chord_arcs() + geom_chord_labels()library(ggplot2) flows <- data.frame( source = c("A", "A", "B", "B", "C", "C"), target = c("B", "C", "A", "C", "A", "B"), freq = c(50, 30, 60, 25, 35, 20) ) ggplot( data = flows, mapping = aes( source = source, target = target, freq = freq ) ) + geom_chord_sectors() + geom_chord_arcs() + geom_chord_labels()
Chord diagram node labels with curved text Draws text labels outside the sector bands.
geom_chord_labels_curve( mapping = NULL, data = NULL, stat = "chord", position = "identity", na.rm = FALSE, show.legend = FALSE, inherit.aes = TRUE, gap_degree = 2, start_degree = 90, direction = 1, inner_radius = 0.6, outer_radius = 0.75, n_bezier = 100, ... )geom_chord_labels_curve( mapping = NULL, data = NULL, stat = "chord", position = "identity", na.rm = FALSE, show.legend = FALSE, inherit.aes = TRUE, gap_degree = 2, start_degree = 90, direction = 1, inner_radius = 0.6, outer_radius = 0.75, n_bezier = 100, ... )
mapping |
Set of aesthetic mappings created by |
data |
The data to be displayed in this layer. There are three options: If A A |
stat |
The statistical transformation to use on the data for this layer.
When using a
|
position |
A position adjustment to use on the data for this layer. This
can be used in various ways, including to prevent overplotting and
improving the display. The
|
na.rm |
If |
show.legend |
logical. Should this layer be included in the legends?
|
inherit.aes |
If |
gap_degree |
Degrees of blank space between adjacent sectors. Default 2. |
start_degree |
Angle (degrees) of the first sector's start edge. Default 90. |
direction |
1 = counter-clockwise sectors (default), -1 = clockwise. |
inner_radius |
Radius of the inner circle (0–1 coordinate space). Default 0.6. |
outer_radius |
Radius of the outer circle (0–1 coordinate space). Default 0.75. |
n_bezier |
Number of points used to approximate each Bézier / arc curve. Default 100. |
... |
Other arguments passed on to
|
A ggplot2 layer.
library(ggplot2) flows <- data.frame( source = c("A", "A", "B", "B", "C", "C"), target = c("B", "C", "A", "C", "A", "B"), freq = c(50, 30, 60, 25, 35, 20) ) ggplot( data = flows, mapping = aes( source = source, target = target, freq = freq ) ) + geom_chord_sectors() + geom_chord_arcs() + geom_chord_labels_curve()library(ggplot2) flows <- data.frame( source = c("A", "A", "B", "B", "C", "C"), target = c("B", "C", "A", "C", "A", "B"), freq = c(50, 30, 60, 25, 35, 20) ) ggplot( data = flows, mapping = aes( source = source, target = target, freq = freq ) ) + geom_chord_sectors() + geom_chord_arcs() + geom_chord_labels_curve()
Chord diagram perpendicular node labels Draws text labels radiating outward from the sector midpoint.
geom_chord_labels_perp( mapping = NULL, data = NULL, stat = "chord", position = "identity", na.rm = FALSE, show.legend = FALSE, inherit.aes = TRUE, gap_degree = 2, start_degree = 90, direction = 1, inner_radius = 0.6, outer_radius = 0.75, n_bezier = 100, ... )geom_chord_labels_perp( mapping = NULL, data = NULL, stat = "chord", position = "identity", na.rm = FALSE, show.legend = FALSE, inherit.aes = TRUE, gap_degree = 2, start_degree = 90, direction = 1, inner_radius = 0.6, outer_radius = 0.75, n_bezier = 100, ... )
mapping |
Set of aesthetic mappings created by |
data |
The data to be displayed in this layer. There are three options: If A A |
stat |
The statistical transformation to use on the data for this layer.
When using a
|
position |
A position adjustment to use on the data for this layer. This
can be used in various ways, including to prevent overplotting and
improving the display. The
|
na.rm |
If |
show.legend |
logical. Should this layer be included in the legends?
|
inherit.aes |
If |
gap_degree |
Degrees of blank space between adjacent sectors. Default 2. |
start_degree |
Angle (degrees) of the first sector's start edge. Default 90. |
direction |
1 = counter-clockwise sectors (default), -1 = clockwise. |
inner_radius |
Radius of the inner circle (0–1 coordinate space). Default 0.6. |
outer_radius |
Radius of the outer circle (0–1 coordinate space). Default 0.75. |
n_bezier |
Number of points used to approximate each Bézier / arc curve. Default 100. |
... |
Other arguments passed on to
|
A ggplot2 layer.
library(ggplot2) flows <- data.frame( source = c("A", "A", "B", "B", "C", "C"), target = c("B", "C", "A", "C", "A", "B"), freq = c(50, 30, 60, 25, 35, 20) ) ggplot( data = flows, mapping = aes( source = source, target = target, freq = freq ) ) + geom_chord_sectors() + geom_chord_arcs() + geom_chord_labels_perp()library(ggplot2) flows <- data.frame( source = c("A", "A", "B", "B", "C", "C"), target = c("B", "C", "A", "C", "A", "B"), freq = c(50, 30, 60, 25, 35, 20) ) ggplot( data = flows, mapping = aes( source = source, target = target, freq = freq ) ) + geom_chord_sectors() + geom_chord_arcs() + geom_chord_labels_perp()
Chord diagram sector bands Draws the outer sector band layer of a chord diagram.
geom_chord_sectors( mapping = NULL, data = NULL, stat = "chord", position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, gap_degree = 2, start_degree = 90, direction = 1, inner_radius = 0.6, outer_radius = 0.75, n_bezier = 100, ... )geom_chord_sectors( mapping = NULL, data = NULL, stat = "chord", position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, gap_degree = 2, start_degree = 90, direction = 1, inner_radius = 0.6, outer_radius = 0.75, n_bezier = 100, ... )
mapping |
Set of aesthetic mappings created by |
data |
The data to be displayed in this layer. There are three options: If A A |
stat |
The statistical transformation to use on the data for this layer.
When using a
|
position |
A position adjustment to use on the data for this layer. This
can be used in various ways, including to prevent overplotting and
improving the display. The
|
na.rm |
If |
show.legend |
logical. Should this layer be included in the legends?
|
inherit.aes |
If |
gap_degree |
Degrees of blank space between adjacent sectors. Default 2. |
start_degree |
Angle (degrees) of the first sector's start edge. Default 90. |
direction |
1 = counter-clockwise sectors (default), -1 = clockwise. |
inner_radius |
Radius of the inner circle (0–1 coordinate space). Default 0.6. |
outer_radius |
Radius of the outer circle (0–1 coordinate space). Default 0.75. |
n_bezier |
Number of points used to approximate each Bézier / arc curve. Default 100. |
... |
Other arguments passed on to
|
A ggplot2 layer.
library(ggplot2) flows <- data.frame( source = c("A", "A", "B", "B", "C", "C"), target = c("B", "C", "A", "C", "A", "B"), freq = c(50, 30, 60, 25, 35, 20) ) ggplot( data = flows, mapping = aes( source = source, target = target, freq = freq ) ) + geom_chord_sectors()library(ggplot2) flows <- data.frame( source = c("A", "A", "B", "B", "C", "C"), target = c("B", "C", "A", "C", "A", "B"), freq = c(50, 30, 60, 25, 35, 20) ) ggplot( data = flows, mapping = aes( source = source, target = target, freq = freq ) ) + geom_chord_sectors()
A stat layer that computes chord diagram geometry
stat_chord( mapping = NULL, data = NULL, geom = "polygon", position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, gap_degree = 2, start_degree = 90, direction = 1, inner_radius = 0.6, outer_radius = 0.75, n_bezier = 100, ... )stat_chord( mapping = NULL, data = NULL, geom = "polygon", position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, gap_degree = 2, start_degree = 90, direction = 1, inner_radius = 0.6, outer_radius = 0.75, n_bezier = 100, ... )
mapping |
Set of aesthetic mappings created by |
data |
The data to be displayed in this layer. There are three options: If A A |
geom |
Use to override the default connection between geom and stat |
position |
A position adjustment to use on the data for this layer. This
can be used in various ways, including to prevent overplotting and
improving the display. The
|
na.rm |
If |
show.legend |
logical. Should this layer be included in the legends?
|
inherit.aes |
If |
gap_degree |
Degrees of blank space between adjacent sectors. Default 2. |
start_degree |
Angle (degrees) of the first sector's start edge. Default 90. |
direction |
1 = counter-clockwise sectors (default), -1 = clockwise. |
inner_radius |
Radius of the inner circle (0–1 coordinate space). Default 0.6. |
outer_radius |
Radius of the outer circle (0–1 coordinate space). Default 0.75. |
n_bezier |
Number of points used to approximate each Bézier / arc curve. Default 100. |
... |
Other arguments passed on to
|
A ggplot2 stat layer.