/awesome-ggplot2

A curated list of awesome ggplot2 tutorials, packages etc.

Awesome ggplot2 Awesome

General

Persons (+ twitter)

R packages

Plot layers

  • {biscale}: Bivariate Mapping with ggplot2
  • {calendR}: Fully customizable ready to print monthly and yearly calendars made with ggplot2
  • {complex-upset}: A library for creating complex UpSet plots with ggplot2 geoms
  • {corrmorant}: R package for flexible correlation matrices based on ggplot2
  • {deeptime}: Plotting Tools for Anyone Working in Deep Time
  • {easyalluvial}: Create alluvial plots with a single line of code
  • {econocharts}: Economics charts in R using ggplot2
  • {ganttrify}: Create beautiful Gantt charts with ggplot2
  • {geomtextpath}: Create curved text paths in ggplot2
  • {ggalignment}: R package for creating D&D alignment charts
  • {ggalluvial}: ggplot2 extension for alluvial plots
  • {ggalt}: Extra Coordinate Systems, Geoms, Statistical Transformations & Scales for 'ggplot2'
  • {ggambit}: Visualise FEN chess positions with ggplot2
  • {gganatogram}: Create anatograms using ggplot2
  • {ggarchery}: Flexible segment geoms with arrows for ggplot2
  • {ggarrow}: ggplot2 extension: more options for drawing arrows
  • {ggbeeswarm}: Column scatter / beeswarm-style plots in ggplot2
  • {ggblanket}: Simplify ggplot2 visualisation
  • {ggblend}: Support for blend modes in ggplot2
  • {ggblur}: Blurry Point Geom for ggplot2
  • {ggborderline}: Provides a set of geoms to make line plots a little bit nicer
  • {ggbraid}: Braid two lines and a ribbon in ggplot2
  • {ggbrain}: R package for creating plots of brains using ggplot
  • {ggbrick}: A brick like geom for ggplot2
  • {ggbump}: A geom for ggplot to create bump plots
  • {ggcalendar}: x and y position as days in month
  • {ggchicklet}: Create Chicklet (Rounded Segmented Column) Charts
  • {ggconsort}: An R package for creating CONSORT diagrams with ggplot
  • {ggcorrplot}: Visualization of a correlation matrix using ggplot2
  • {ggcorr}: Correlation matrixes with ggplot2
  • {ggcorset}: Introducing corset plots
  • {ggpcp}: Parallel Coordinate Plots in the 'ggplot2' Framework
  • {ggdemetra}: ggplot2 extension for seasonal and trading day adjustment with RJDemetra
  • {ggdensity}: An R package for interpretable visualizations of density estimates
  • {ggeconodist}: Create Diminutive Distribution Charts
  • {ggdag}: An R Package for visualizing and analyzing causal directed acyclic graphs
  • {ggdirectlabel}: Make it easier to directly label ggplot2 charts
  • {ggdist}: Visualizations of distributions and uncertainty
  • {ggExtra}: Add marginal histograms to ggplot2, and more ggplot2 enhancements
  • {ggflowchart}: R package for producing flowcharts using ggplot2
  • {ggfreehand}: Add freehand circles to ggplot2 graphs
  • {gggenes}: Draw gene arrow maps in ggplot2
  • {gggenomes}: A grammar of graphics for comparative genomics
  • {gggibbous}: Moon charts, a pie chart alternative, for ggplot2
  • {gghalves}: Easy half-half geoms in ggplot2
  • {gghdr}: Plots of highest density regions (HDR) for ggplot2
  • {gghilbertstrings}: Create Hilbert curves in ggplot2
  • {ggHoriPlot}: build horizon plots in ggplot2
  • {ggimg}: Graphics Layers for Plotting Image Data with ggplot2
  • {ggkeyboard}: Make a keyboard using ggplot2
  • {ggmacc}: R package repository for building marginal abatement cost curves with ggplot2
  • {ggmosaic}: Mosaicplots in the ggplot2 framework
  • {ggmsa}: a visual exploration tool for multiple sequence alignment and associated data
  • {ggmulti}: Package for adding some multivariate visualizations to ggplot2
  • {ggpackets}: Cleaner composition of ggplot layers
  • {ggparliament}: Simple parliament plots using ggplot2
  • {ggplateplot}: make plots resembling cell culture microwell plates
  • {ggpointdensity}: A Cross Between a Scatter Plot and a 2D Density Plot
  • {ggpointgrid}: Rearrange scatter plot points on a regular grid
  • {ggpointless}: A point layer to emphasize some observations
  • {ggpolar}: Dots and Their Connections in Polar Coordinate System
  • {ggsector}: Use R language to draw sector
  • {ggshadow}: Shadow Geoms for ggplot2
  • {ggshakeR}: An analysis and visualization R package that works with publicly available soccer data
  • {ggsoccer}: Plot soccer event data in R/ggplot2
  • {ggspectra}: Plotting spectra with ggplot2
  • {ggstamp}: stamp_* as an API for annotation layers
  • {ggstance}: Horizontal ggplot2 components
  • {ggpage}: Creates Page Layout Visualizations in R
  • {ggperiodic}: Easy plotting of periodic data with ggplot2
  • {ggplate}: Create Layout Plots of Biological Culture Plates and Microplates
  • {ggpol}: Parliament diagrams and more for ggplot2
  • {ggpolypath}: Polygons with holes for ggplot2
  • {ggpp}: Grammar of graphics extensions to 'ggplot2'
  • {ggpubr}: 'ggplot2' Based Publication Ready Plots
  • {ggquiver}: R package for quiver plots in 'ggplot2'
  • {ggqr}: ggplot2 geom for QR codes
  • {ggradar}: radar charts with ggplot2
  • {ggrain}: Make beautiful Raincloud plots in R
  • {ggraph}: A grammar of graphics for relational data
  • {ggrastr}: Raster geoms for ggplot2
  • {ggrepel}: Repel overlapping text labels away from each other
  • {ggreverse}: Reverse a ggplot object back into code
  • {ggrgl}: 3D Graphics Using the Grammar of Graphics
  • {ggridges}: Ridgeline plots in ggplot2
  • {ggrounded}: Rounded Bar Plots
  • {ggsankey}: The goal of ggsankey is to make beautiful sankey, alluvial and sankey bump plots in ggplot2
  • {ggseqplot}: Render Sequence Plots using 'ggplot2'
  • {ggside}: ggplot2 extension allowing for plotting various geometries as side panels
  • {ggsignif}: Easily add significance brackets to your ggplots
  • {ggsolar}: Generate "solar system" plots with {ggplot2}
  • {ggstraw}: geom_straw for ggplot2
  • {ggstream}: A package to make streamplots
  • {ggsvg}: Use SVG images as ggplot points
  • {ggtda}: ggplot2 extension to visualize persistent homology
  • {ggtern}: An extension to ggplot2, for the creation of ternary diagrams
  • {ggtikz}: Add TikZ annotations with absolute data or relative plot coordinates to ggplots
  • {ggTimeSeries}: Time series visualisation
  • {ggthreed}: 3d geoms and stats for ggplot
  • {ggtree}: Visualization and annotation of phylogenetic trees
  • {ggtrendline}: An R Package for Adding Trendline and Confidence Interval to "ggplot"
  • {ggtricks}: Create Sector and Other Charts Easily Using Grammar of Graphics
  • {ggvenn}: Venn Diagram by ggplot2, with really easy-to-use API
  • {ggVennDiagram}: A 'ggplot2' implement of Venn Diagram
  • {ggvoronoi}: Easy Voronoi diagram heatmaps with ggplot2
  • {ggvwline}: Layer functions for drawing variable-width curves
  • {ggwaffle}: Creating waffle charts in a ggplot friendly way
  • {ggweekly}: Easy, printable, custom calendars and week planners
  • {ggwordcloud}: A word cloud geom for ggplot2
  • {ggxmean}: Put a vertical line at the mean of x w/ geom_xmean() and do other stuff
  • {jjPlot}: funny geom/stat functions for visualization
  • {likert}: Analysis and Visualization Likert Items
  • {linkET}: Toolbox for heatmap and mantel test plot.
  • {parttree}: Simple package for plotting decision tree partitions in R
  • {patternplot}: Versatile Pie Charts, Ring Charts, Bar Charts and Box Plots using Patterns, Colors and Images
  • {scattermore}: very fast scatterplots for R
  • {see}: Visualisation toolbox for beautiful and publication-ready figures
  • {shadowtext}: shadow text for grid and ggplot2
  • {treemapify}: Draw treemaps in ggplot2
  • {visdat}: Preliminary Exploratory Visualisation of Data
  • {vistime}: Pretty timelines in R
  • {waffle}: Make waffle (square pie) charts in R
  • {WVPlots}: Pre-packaged plots in R

Themes and aesthetics

  • {bbplot}: R package that helps create and export ggplot2 charts in the style used by the BBC News data team
  • {ButterflyColors}: Color palette for data visualization based on butterfly species
  • {colorBlindnessSafe}: Color Set for Color Blindness
  • {cols4all}: Colors for all (R package)
  • {cyberpunk}: A function to create cyberpunk-style graphs with R based on ggplot2
  • {darknerdthemes}: Dark ggplots themes for nerds
  • {duke}: Creating a Color-Blind Friendly Duke Color Package
  • {ggdc}: Datacamp Themes for ggplot2
  • {ggcharts}: Get You to Your Desired Plot Faster
  • {ggcute}: Cute things for ggplot2
  • {ggdark}: Dark mode for ggplot2 themes
  • {ggchromatic}: Colour and fill scales for 'ggplot2' using colour spaces
  • {ggCyberPunk}: Working on creating a similar cyberpunk geom for ggplot
  • {ggeasy}: Easy Access to 'ggplot2' Commands
  • {ggedit}: Interactively edit ggplot layer aesthetics and theme definitions
  • {ggfittext}: ggplot2 geoms to fit text into boxes
  • {ggfx}: ggfx is a (currently experimantal) package that allows the use of various filters and shaders on ggplot2 layers
  • {gglaplot}: Makes graphics in the GLA style using ggplot2
  • {ggnewscale}: Multiple Fill and Color Scales in 'ggplot2'
  • {ggokabeito}: Colorblind-friendly, qualitative Okabe-Ito Scales for ggplot2 and ggraph
  • {ggpomological}: Pomological plot theme for ggplot2
  • {ggprism}: ggplot2 extension inspired by GraphPad Prism
  • {ggrough}: Convert ggplot2 chart to roughjs
  • {ggsci}: Scientific journal and sci-fi themed color palettes for ggplot2
  • {ggseg}: Plotting tool for brain atlases, in ggplot
  • {ggstar}: Star layer for ggplot2
  • {ggtech}: ggplot2 tech themes, scales, and geoms
  • {ggtext}: Improved text rendering support for ggplot2
  • {ggtextures}: Drawing textured rectangles and bars with ggplot
  • {ggthemes}: Additional themes, scales, and geoms for ggplot2
  • {ggthemr}: Themes for ggplot2
  • {harrypotter}: Harry Potter inspired palette for R
  • {hrbrthemes}: Opinionated, typographic-centric ggplot2 themes and theme components
  • (lemon): Freshing up your ggplots
  • {mdthemes}: Markdown Themes for 'ggplot2'
  • {MexBrewer}: Color Palettes Inspired by Works Mexican Muralists
  • {monochromeR}: A package for creating monochrome colour palettes and easily converting rgba values to hex codes
  • {NatParksPalettes}: Color palette package inspired by National Parks
  • {paletteer}: Collection of most color palettes in a single R package
  • {pilot}: A minimal ggplot2 theme with an accessible discrete color palette
  • {peRReo}: R color palettes inspired by reggaeton and latin albums
  • {PrettyCols}: R package containing pretty colour palettes.
  • {rockthemes}: R colour palettes based on classic rock albums and some other ones
  • {savonliquide}: Check for Color Contrast Accessibility in R
  • {soilpalettes}: R color palettes inspired by soil profiles
  • {thematic}: Unified and automatic theming of ggplot2, lattice, and base R graphics
  • {tvthemes}: ggplot2 themes and palettes based on your favorite TV shows
  • {urbnthemes}: Urban Institute's ggplot2 theme and tools

Presentation, composition and scales

  • {camcorder}: Record plots generated during an R session and replay as a gif!
  • {cowplot}: Streamlined Plot Theme and Plot Annotations for ggplot2
  • {deeptime}: Plotting Tools for Anyone Working in Deep Time
  • {egg}: (fragile) extensions for ggplot2
  • {facetious}: Home to some alternate facetting for ggplot2
  • {facetscales}: facet_grid with different scales per facet
  • {figpatch}: Easily Arrange Images with Patchwork Alongside ggplot2 Figures
  • {geofacet}: R package for geographical faceting with ggplot2
  • {gganimate}: A Grammar of Animated Graphics
  • {ggannotate}: Interactively annotate ggplots
  • {ggbillboard}: A package to fill vacant ggplot2 facets with images
  • {ggbreak}: Set Axis Break for 'ggplot2'
  • {ggcolormeter}: A ggplot2 color/fill legend guide extension in the style of a dashboard meter
  • {ggfocus}: A 'ggplot2' extension that provides tools for automatically creating scales to focus on subgroups
  • {ggforce}: Accelerating ggplot2
  • {ggformula}: Provides a formula interface to 'ggplot2' graphics
  • {gggrid}: Accessing 'grid' from 'ggplot2'
  • {ggh4x}: ggplot extension: options for tailored facets, multiple colourscales and miscellaneous
  • {gghighlight}: Highlight points and lines in ggplot2
  • {gglabeller}: Shiny gadget for labeling points on ggplot
  • {ggmagnify}: Create a magnified inset of part of a ggplot object
  • {ggNestedBarChart}: An easier way to create nested, grouped, heirarchical bar charts with ggplot2
  • {ggplotify}: Convert plot to grob and ggplot object
  • {ggProfessional}: Manage ggplot themes, colors, logos and exporting
  • {ggragged}: Ragged Grids for ggplot2
  • {ggtrace}: Programmatically inspect, debug, and manipulate ggproto methods
  • {ggtrack}: Add tracking banner to plots
  • {gguidance}: additional guides to the ggplot2 ecosystem
  • {ggupset}: Combination matrix axis for 'ggplot2' to create 'UpSet' plots
  • {ggview}: Ggplot picture previewer
  • {gtable}: The layout packages that powers ggplot2
  • {jjAnno}: An annotation package for ggplot plot
  • {patchwork}: The Composer of ggplots
  • {relayer}: Rethinking layers in ggplot2
  • {scales}: Tools for ggplot2 scales
  • {showtext}: Using Fonts More Easily in R Graphs
  • {tagger}: Add tags to ggplot2 facets

Interactive

  • {ggiraph}: Make 'ggplot' Graphics Interactive
  • {ggtips}: Adds interactive tooltip boxes to ggplots (standalone or rendered in Shiny)
  • {plotly}: An interactive graphing library for R

Network

  • {geomnet}: Network visualization in the ggplot2 framework
  • {ggnet}: Network visualization with ggplot2
  • {ggnetwork}: Geoms to plot networks with ggplot2
  • {graphlayouts}: New layout algorithms for network visualizations in R
  • {qgraph}: Graph Plotting Methods, Psychometric Data Visualization and Graphical Model Estimation

Spatial

  • {bertin}: Transform choropleth maps into valued points
  • {eumaps}: An R package that provides easy-to-use tools for making professional-quality choropleth maps of the European Union (EU)
  • {ggautomap}: Create ggplot maps from a column of place names
  • {ggcounty}: Generate ggplot2 geom_map county maps
  • {ggmap}: A package for plotting maps in R with ggplot2
  • {ggOceanMaps}: Plot oceanographic research data on maps using ggplot2
  • {ggsflabel}: Labels for 'sf' with 'ggplot2'
  • {ggsn}: R package to add north symbols and scale bars to maps created with ggplot or ggmap
  • {ggspatial}: Enhancing spatial visualization in ggplot2
  • {layer}: Create stacked tilted maps
  • {mapSpain}: Administrative Boundaries of Spain
  • {metR}: Tools for Easier Analysis of Meteorological Fields
  • {mxmaps}: An R package for making maps of Mexico
  • {plotDK}: Plot Summary Statistics as Choropleth Maps of Danish Administrative Areas
  • {rayshader}: R Package for 2D and 3D mapping and data visualization
  • {starBliss}: Create beautiful, print quality maps of the night sky in R
  • {sugarbag}: An R package to create tessellated hexagon maps of Australia
  • {tidyterra}: tidyverse and ggplot2 methods for terra spatial objects
  • {urbnmapr}: US state and county maps with Alaska and Hawaii

Icons, patterns and images

  • {cropcircles}: Crop an image into a circle with a transparent background
  • {emoGG}: Emoji in ggplot2
  • {ggflags}: A flag geom for ggplot2
  • {ggimage}: Use Images in ggplot2
  • {ggpath}: Robust Image Rendering Support for 'ggplot2'
  • {ggpattern}: ggplot geoms with pattern fills

Data and models

  • {edgebundle}: R package implementing edge bundling algorithms
  • {distributional}: Vectorised distributions for R
  • {FunnelPlotR}: Funnel plots for comparing institutional performance, with overdispersion adjustment
  • {GGally}: R package that extends ggplot2
  • {ggdendro}: Tools to extract dendrogram plot data for use with 'ggplot2'
  • {ggDoE}: Modern Graphs for Design of Experiments with ggplot2
  • {ggeffects}: Tidy Data Frames of Marginal Effects for ggplot2
  • {ggESDA}: An R package for Exploratory Symbolic Data Analysis using ggplot2
  • {ggfortify}: Define fortify and autoplot functions to allow ggplot2 to handle some popular R packages
  • {gginnards}: R package extending 'ggplot2' with manipulation and debugging tools
  • {ggip}: R package to visualize IP data
  • {gglm}: Grammar of Graphics for Linear Model Diagnostic Plots
  • {ggmice}: Visualize incomplete and imputed data
  • {ggols}: visual expositions of simpler linear models
  • {ggparty}: ggplot2 visualizations for the partykit package
  • {ggpmisc}: R package ggpmisc is an extension to ggplot2 and the Grammar of Graphics
  • {ggpval}: Add statistical test or annotation to your ggplot2 plots
  • {grafify}: Easy Graphs for Data Visualisation and Linear Models for ANOVA
  • {gratia}: ggplot-based graphics and useful functions for GAMs fitted using the mgcv package
  • {ggRandomForest}: Graphical analysis of random forests with the randomForestSRC, randomForest and ggplot2 packages
  • {ggResidpanel}: An R package for creating a panel of diagnostic plots for residuals from a model
  • {ggseas}: seasonal adjustment on the fly extension for ggplot2
  • {ggstatsplot}: Enhancing 'ggplot2' plots with statistical analysis
  • {ggsurvfit}: Easy and Flexible Time-To-Event Figures
  • {halfmoon}: Techniques to Build Better Balance in Propensity Score Models
  • {interactions}: A comprehensive, user-friendly toolkit for visualizing and analyzing statistical interactions
  • {jtools}: Tools for summarizing/visualizing regressions and other helpful stuff
  • {KMunicate}: Create KMunicate-Style Plots
  • {lindia}: Extension package of linear regression diagonostic plots in ggplot2
  • {metrica}: Prediction Performance Metrics
  • {mlr3viz}: Visualizations for mlr3
  • {naniar}: Tidy data structures, summaries, and visualisations for missing data
  • {performance}: Models' quality and performance metrics (R2, ICC, LOO, AIC, BF, ...)
  • {plotROC}: Interactive ROC plots with ggplot + d3.js
  • {ppsr}: R implementation of Predictive Power Score
  • {SBC}: Simulation-based Calibration
  • {sjPlot}: Data Visualization for Statistics in Social Science
  • {superb}: Summary plots with adjusted error bars
  • {survminer}: Survival Analysis and Visualization
  • {tidybayes}: Bayesian analysis + tidy data + geoms
  • {treeheatr}: Heatmap-integrated Decision Tree Visualizations
  • {visR}: A package to wrap functionality for plots, tables and diagrams adhering to graphical principles

Python packages

  • {plotnine}: Python implementation of ggplot2 using matplotlib backend
  • {patchworklib}: The Composer of plotnine ggplots
  • {plotnine3d}: 3D Graphics using the grammar of graphics
  • {adjustText}: ggrepel-inspired label placement for matplotlib (integrated with plotnine)

Books

Book chapters

Online Courses

Galleries

Text tutorials

Video tutorials

TidyTuesday

Miscellaneous