Shapes are, in essence, anything with volume. These geoms allow you to draw differnt types of parameterised shapes, all taking advantage of the benefit of the geom_shape improvements to geom_polygon.


Draw polygons with expansion/contraction and/or rounded corners

stat_circle() geom_circle()

Circles based on center and radius

stat_ellip() geom_ellipse()

Draw (super)ellipses based on the coordinate system scale

stat_regon() geom_regon()

Draw regular polygons by specifying number of sides

stat_arc_bar() stat_pie() geom_arc_bar()

Arcs and wedges as polygons

stat_bspline_closed() geom_bspline_closed() geom_bspline_closed0()

Create closed b-spline shapes

stat_diagonal_wide() geom_diagonal_wide()

Draw an area defined by an upper and lower diagonal

stat_parallel_sets() geom_parallel_sets() stat_parallel_sets_axes() geom_parallel_sets_axes() geom_parallel_sets_labels()

Create Parallel Sets diagrams

geom_voronoi_tile() geom_voronoi_segment() geom_delaunay_tile() geom_delaunay_segment() geom_delaunay_segment2() stat_delvor_summary()

Voronoi tesselation and delaunay triangulation


The different line geoms are all parameterised versions of different line types, greatly easing your pain when needing a special type of stroke. Many of them have several versions depending on whether you want to show gradients along the lines, interpolate between endpoint aesthetics, or simply have a barebone version.

stat_link() stat_link2() geom_link() geom_link2() geom_link0()

Link points with paths

stat_arc() geom_arc() stat_arc2() geom_arc2() stat_arc0() geom_arc0()

Arcs based on radius and radians

stat_bezier() geom_bezier() stat_bezier2() geom_bezier2() stat_bezier0() geom_bezier0()

Create quadratic or cubic bezier curves

stat_bspline() geom_bspline() stat_bspline2() geom_bspline2() stat_bspline0() geom_bspline0()

B-splines based on control points

stat_diagonal() geom_diagonal() stat_diagonal2() geom_diagonal2() stat_diagonal0() geom_diagonal0()

Draw horizontal diagonals

stat_spiro() geom_spiro()

Draw spirograms based on the radii of the different "wheels" involved

geom_voronoi_tile() geom_voronoi_segment() geom_delaunay_tile() geom_delaunay_segment() geom_delaunay_segment2() stat_delvor_summary()

Voronoi tesselation and delaunay triangulation


Annotation is important for storytelling, and ggforce provides a family of geoms that makes it easy to draw attention to, and describe, features of the plot. They all work in the same way, but differ in the way they enclose the area you want to draw attention to.


Annotate areas with rectangles


Annotate areas with circles


Annotate areas with ellipses


Annotate areas with hulls


Facets are one of the greatest things in ggplot2, and ggforce comes with more of the awesomeness, both with variants of facet_grid and facet_wrap, as well as completely new takes on faceting.


Facet data for zoom with context


Split facet_wrap over multiple plots


Split facet_grid over multiple plots


Create a stereogram plot


While separate packages comes with different palettes for already established scales, ggforce provides two completely new ones.

scale_x_unit() scale_y_unit()

Position scales for units data

scale_depth() scale_depth_continuous() scale_depth_discrete()

Scales for depth perception


Transformations can both be used to transform scales and coordinate systems but can also be used more broadly for describing specific types of spatial transformation of data.


Reverse a transformation


Create a power transformation object


Create radial data in a cartesian coordinate system

linear_trans() rotate() stretch() shear() translate() reflect()

Create a custom linear transformation


ggforce contains an assortment of various stuff that doesn’t fit into a bigger bucket. That doesn’t make it any less useful.

stat_sina() geom_sina()

Sina plot


Jitter points with normally distributed random noise


Tidy data for use with geom_parallel_sets


Determine the number of pages in a paginated facet plot


Theme without axes and gridlines


ggforce: Accelerating ggplot2


ggforce extensions to ggplot2