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 by different data columns


Facet data for zoom with context

facet_row() facet_col()

One-dimensional facets


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


A point geom specialised for scatterplot matrices

geom_autodensity() geom_autohistogram()

A distribution geoms that fills the panel and works with discrete and continuous data


A labeller function to parse TeX syntax


Intervals in vertical and horizontal directions


Jitter based on scale types


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 ggforce-package

ggforce: Accelerating 'ggplot2'

GeomShape StatArcBar StatPie GeomArcBar StatArc GeomArc StatArc2 StatArc0 GeomArc0 StatAutodensity GeomAutoarea StatAutobin GeomAutorect StatBezier StatBezier2 StatBezier0 GeomBezier0 StatBspline StatBspline2 GeomBspline0 GeomBsplineClosed0 StatCircle GeomCircle StatDiagonal StatDiagonal2 StatDiagonal0 StatDiagonalWide StatEllip StatErr FacetGridPaginate FacetMatrix FacetRow FacetCol FacetStereo FacetWrapPaginate FacetZoom ggforce-extensions GeomPathInterpolate StatLink StatLink2 GeomMarkCircle GeomMarkEllipse GeomMarkHull GeomMarkRect StatParallelSets StatParallelSetsAxes GeomParallelSetsAxes PositionJitterNormal PositionAuto PositionFloatstack StatRegon StatSina StatSpiro StatVoronoiTile StatVoronoiSegment StatDelaunayTile StatDelaunaySegment StatDelaunaySegment2 StatDelvorSummary

ggforce extensions to ggplot2