ggplot2
Awesome General
Persons (+ twitter)
- Hadley Wickham (@hadleywickham)
- Kieran Healy (@kjhealy)
- Claus Wilke (@ClausWilke)
- Thomas Lin Pedersen (@thomasp85)
- Winston Chang (@winston_chang)
- Lionel Henry (@_lionelhenry)
- Kara Woo (@kara_woo)
- Hiroaki Yutani (@yutannihilat_en)
- Dewey Dunnington (@paleolimbot)
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
- Data Visualization: A practical introduction
- Data Visualization with R
- Fundamentals of Data Visualization
- ggplot2: Elegant Graphics for Data Analysis
Book chapters
- Cookbook for R: Graphs
- R for Data Science: Data visualisation
- Modern Statistics for Modern Biology: High Quality Graphics in R
- Quantitative Politics with R: Introduction to ggplot2
Online Courses
Galleries
Text tutorials
-
Beginner, introduction
- a ggplot2 grammar guide
- A Simple Introduction to the Graphing Philosophy of ggplot2
- Aesthetics, Geoms, Mappings, Scales, What?
- An Introduction on How to Make Beautiful Charts With R and ggplot2
- ggplot2 Quickref
- Beautiful plotting in R: A ggplot2 cheatsheet
- Top 50 ggplot2 Visualizations - The Master List (With Full R Code)
- A ggplot2 Tutorial for Beautiful Plotting in R
- Statistical tools for high-throughput data analysis: ggplot2 - Essentials
- Efficient and beautiful data synthesis: Taking your tidyverse skills to the next level
- Tips and tricks for ggplot2
-
Intermediate, general
-
Theme customisation
- 3 alternatives to a discrete color scale legend in ggplot2
- 10 Levels of ggplot2: From Basic to Beautiful
- 10 Tips to Customize Text Color, Font, Size in ggplot2 with element_text()
- 15 Tips to Customize lines in ggplot2 with element_line()
- A complete guide to scales
- Alternatives to Simple Color Legends in ggplot2
- Bar plot checklist
- Changing Glyph in legend in ggplot2
- Creating and using custom ggplot2 themes
- Custom colour palettes for {ggplot2}
- Custom themes in ggplot2
- ggplot Wizardry Hands-On
- How to build a Tufte-style weather graph in R using ggplot2
- How to make any plot look better
- Making a ggplot theme
- Creating corporate colour palettes for ggplot2
- Label line ends in time series with ggplot2
- Data Viz with Python and R: ggplot2
- The Evolution of a ggplot (Ep. 1)
- ggplot2 Theme Elements Demonstration
- Quick and easy ways to deal with long labels in ggplot2
- Understanding text size and resolution in ggplot2
- Variations on a ggtheme: Applying a unifying aesthetic to your plots
- What we learned from creating a custom graphics package in R using ggplot2
-
Plot layers
- A Quick How-to on Labelling Bar Graphs in ggplot2
- Annotated Forest Plots using ggplot2
- Creating a cracked egg plot using {ggplot2} in R
- Creating flowcharts with {ggplot2}
- Exploring ggplot2 boxplots - Defining limits and adjusting style
- Exploring other {ggplot2} geoms
- ggpathway: A tutorial for pathway visualization using tidyverse, igraph, and ggraph
- Heatmaps in ggplot2
- Make Multi-point “dumbbell” Plots in ggplot2
- Real Emojis in ggplot2
- Recreate a FiveThirtyEight Chicklet Stacked Bar Chart in ggplot2
- geom_paired_raincloud(): A {ggplot2} geom for visualizing change in distribution between two conditions
- Plot moving average in R using ggplot2
- Pyramid Plots in ggplot2
- Radial Patterns in ggplot2
- Storytelling in ggplot using rounded rectangles
- Visualizing Distributions with Raincloud Plots (and How to Create Them with ggplot2)
- Visualizing ordinal variables
- Waffle charts with svg images
-
Regression models
-
Spatial
- 6 easy ways to map population density in R
- Bivariate maps with ggplot2 and sf
- How to make fancy road trip maps with R and OpenStreetMap
- Inset maps with ggplot2
- Making Middle Earth maps with R
- Plot RGB satellite imagery in true-color with ggplot2 in R
- Visualising the 2022 Australian federal election with geom_sugarbag
-
Interactive
-
Presentation
- Align multiple ggplot2 plots by axis
- Combining plots in ggplot2
- Designing ggplots: making clear figures that communicate
- How to use natural and base 10 log scales in ggplot2
- Layered Presentation of Graphics with +aes() in ggplot2
- Label line ends in time series with ggplot2
- Reordering and facetting for ggplot2
- Save space in faceted plots
- Self-documenting plots in ggplot2
-
Statistics
Video tutorials
-
Beginner/intermediate
-
Customization
- How to fix the sizes in your ggplots
- How to make Boxplots in R More Informative (ggplot2 and Extension Packages)
- ggplot2 Wizardry: My Favorite Tricks and Secrets for Beautiful Plots in R
- Beyond Bar and Box Plots: Chart Alternatives and How to Design Them with ggplot2
- Perfect Bar Charts in 150 Seconds
-
Packages
TidyTuesday
-
Popular submissions