Learn R Programming

⚠️There's a newer version (3.5.0) of this package.Take me there.

ggplot2

Overview

ggplot2 is a system for declaratively creating graphics, based on The Grammar of Graphics. You provide the data, tell ggplot2 how to map variables to aesthetics, what graphical primitives to use, and it takes care of the details.

Installation

# The easiest way to get ggplot2 is to install the whole tidyverse:
install.packages("tidyverse")

# Alternatively, install just ggplot2:
install.packages("ggplot2")

# Or the the development version from GitHub:
# install.packages("devtools")
devtools::install_github("tidyverse/ggplot2")

Usage

It's hard to succintly describe how ggplot2 works because it embodies a deep philosophy of visualisation. However, in most cases you start with ggplot(), supply a dataset and aesthetic mapping (with aes()). You then add on layers (like geom_point() or geom_histogram()), scales (like scale_colour_brewer()), faceting specifications (like facet_wrap()) and coordinate systems (like coord_flip()).

library(ggplot2)

ggplot(mpg, aes(displ, hwy, colour = class)) + 
  geom_point()

Learning ggplot2

If you are new to ggplot2 you are better off starting with a systematic introduction, rather than trying to learn from reading individual documentation pages. Currently, there are three good places to start:

  1. The data visualisation and graphics forcommunication chapters in R for data science. R for data science is designed to give you a comprehensive introduction to the tidyverse, and these two chapters will you get up to speed with the essentials of ggplot2 as quickly as possible.

  2. If you'd like to take an interactive online course, try Data visualisation with ggplot2 by Rick Scavetta on datacamp.

  3. If you want to dive into making common graphics as quickly as possible, I recommend The R Graphics Cookbook by Winston Chang. It provides a set of recipes to solve common graphics problems. A 2nd edition will is due out in 2017.

If you've mastered the basics and want to learn more, read ggplot2: Elegant Graphics for Data Analysis. It describes the theoretical underpinnings of ggplot2 and shows you how all the pieces fit together. This book helps you understand the theory that underpins ggplot2, and will help you create new types of graphic specifically tailored to your needs. The book is not available for free, but you can find the complete source for the book at https://github.com/hadley/ggplot2-book.

Getting help

There are two main places to get help with ggplot2:

  1. The ggplot2 mailing list is a friendly place to ask any questions about ggplot2. You must be a member to post messages, but anyone can read the archived discussions.

  2. stackoverflow is a great source of answers to common ggplot2 questions. It is also a great place to get help, once you have created a reproducible example that illustrates your problem.

Copy Link

Version

Install

install.packages('ggplot2')

Monthly Downloads

1,389,183

Version

2.2.0

License

GPL-2 | file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

Hadley Wickham

Last Published

November 11th, 2016

Functions in ggplot2 (2.2.0)

aes

Construct aesthetic mappings
aes_group_order

Aesthetics: grouping
aes_all

Given a character vector, create a set of identity mappings
aes_linetype_size_shape

Differentiation related aesthetics: linetype, size, shape
aes_

Define aesthetic mappings programatically
aes_position

Position related aesthetics: x, y, xmin, xmax, ymin, ymax, xend, yend
absoluteGrob

Absolute grob
aes_colour_fill_alpha

Colour related aesthetics: colour, fill and alpha
add_theme

Modify properties of an element in a theme object
aes_auto

Automatic aesthetic mapping
annotate

Create an annotation layer
autoplot

Create a complete ggplot appropriate to a particular data type
annotation_raster

Annotation: high-performance rectangular tiling
as.list.ggproto

Convert a ggproto object to a list
borders

Create a layer of map borders
as_labeller

Coerce to labeller function
benchplot

Benchmark plot creation time. Broken down into construct, build, render and draw times.
annotation_custom

Annotation: Custom grob
annotation_map

Annotation: a maps
annotation_logticks

Annotation: log tick marks
coord_munch

Munch coordinates data
coord_fixed

Cartesian coordinates with fixed "aspect ratio"
combine_vars

Take input data and define a mapping between facetting variables and ROW, COL and PANEL keys
coord_flip

Cartesian coordinates with x and y flipped
coord_polar

Polar coordinates
calc_element

Calculate the element properties, by inheriting properties from its parents
coord_map

Map projections
continuous_scale

Continuous scale constructor.
coord_cartesian

Cartesian coordinates
coord_trans

Transformed Cartesian coordinate system
economics

US economic time series
cut_interval

Discretise numeric data into categorical
draw_key

Key drawing functions
element_grob

Generate grid grob from theme element
diamonds

Prices of 50,000 round cut diamonds
facet_grid

Lay out panels in a grid
discrete_scale

Discrete scale constructor.
facet_null

Facet specification: a single panel.
margin

Theme elements
expand_limits

Expand the plot limits, using data
facet_wrap

Wrap a 1d ribbon of panels into 2d
fortify-multcomp

Fortify methods for objects produced by multcomp
geom_abline

Reference lines: horizontal, vertical, and diagonal
fortify

Fortify a model with data.
fortify.lm

Supplement the data fitted to a linear model with model fit statistics.
fortify.sp

Fortify method for classes from the sp package.
faithfuld

2d density estimate of Old Faithful data
fortify.map

Fortify method for map objects
geom_bar

Bars charts
find_panel

Find panels in a gtable
geom_density

Smoothed density estimates
geom_crossbar

Vertical intervals: lines, crossbars & errorbars
geom_dotplot

Dot plot
geom_map

Polygons from a reference map
geom_rug

Rug plots in the margins
geom_segment

Line segments and curves
ggsave

Save a ggplot (or other grid object) with sensible defaults
ggtheme

Complete themes
limits

Generate correct scale type for specified limits
geom_bin2d

Heatmap of 2d bin counts
geom_blank

Draw nothing
geom_path

Connect observations
geom_smooth

Smoothed conditional means
geom_spoke

Line segments parameterised by location, direction and distance
geom_point

Points
ggplot_gtable

Build a plot with all the usual bits and pieces.
ggplot

Create a new ggplot
guide_legend

Legend guide
geom_violin

Violin plot
gg_dep

Give a deprecation error, warning, or message, depending on version number.
hmisc

A selection of summary functions from Hmisc
mean_se

Calculate mean and standard error
is.Coord

Is this object a coordinate system?
midwest

Midwest demographics
position_jitter

Jitter points to avoid overplotting
position_jitterdodge

Simultaneously dodge and jitter
reexports

Objects exported from other packages
remove_missing

Convenience function to remove missing values from a data.frame
geom_count

Count overlapping points
geom_density_2d

Contours of a 2d density estimate
geom_jitter

Jittered points
geom_freqpoly

Histograms and frequency polygons
+.gg

Add components to a plot
ggplot_build

Build ggplot for rendering.
graphical-units

Graphical units
guide_colourbar

Continuous colour bar guide
label_bquote

Label with mathematical expressions
labeller

Construct labelling specification
guides

Set guides for each scale
labellers

Useful labeller functions
labs

Modify axis, legend, and plot labels
presidential

Terms of 11 presidents from Eisenhower to Obama
print.ggplot

Explicitly draw plot
render_axes

Render panel axes
render_strips

Render panel strips
stat_summary_bin

Summarise y values at unique/binned x
stat_unique

Remove duplicates
geom_boxplot

A box and whiskers plot (in the style of Tukey)
geom_contour

2d contours of a 3d surface
geom_polygon

Polygons
geom_qq

A quantile-quantile plot
ggplot2-ggproto

Base ggproto classes for ggplot2
ggplot2-package

Create Elegant Data Visualisations Using the Grammar of Graphics
is.ggplot

Reports whether x is a ggplot object
is.facet

Is this object a facetting specification?
last_plot

Retrieve the last plot to be modified or created.
layer

Create a new layer
position_nudge

Nudge points a fixed distance
position_stack

Stack overlapping objects on top of each another
print.ggproto

Format or print a ggproto object
qplot

Quick plot
scale_x_discrete

Position scales for discrete data
scale_date

Position scales for date/time data
stat_identity

Leave data as is
lims

Set scale limits
stat_summary_2d

Bin and summarise in 2d (rectangle & hexagons)
position_dodge

Dodge overlapping objects side-to-side
position_identity

Don't adjust position
scale_colour_brewer

Sequential, diverging and qualitative colour scales from colorbrewer.org
scale_continuous

Position scales for continuous data (x & y)
scale_colour_gradient

Gradient colour scales
geom_hex

Hexagonal heatmap of 2d bin counts
geom_quantile

Quantile regression
geom_errorbarh

Horizontal error bars
geom_ribbon

Ribbons and area plots
geom_raster

Rectangles
geom_label

Text
ggplotGrob

Generate a ggplot2 plot grob.
ggproto

Create a new ggproto object
is.rel

Reports whether x is a rel object
is.theme

Reports whether x is a theme object
scale_size

Scales for area or radius
scale_shape

Scales for shapes, aka glyphs
seals

Vector field of seal movements
sec_axis

Specify a secondary axis
waiver

A waiver object.
scale_colour_grey

Sequential grey colour scales
wrap_dims

Arrange 1d structure into a grid
summary.ggplot

Displays a useful description of a ggplot object
theme_get

Get, set, and modify the active theme
zeroGrob

The zero grob draws nothing and has zero size.
map_data

Create a data frame of map data
scale_alpha

Alpha transparency scales
max_height

Get the maximal width/length of a list of grobs
scale_linetype

Scale for line patterns
resolution

Compute the "resolution" of a numeric vector
scale_manual

Create your own discrete scale
stat_ellipse

Compute normal confidence ellipses
stat_function

Compute function for each x value
translate_qplot_ggplot

Translating between qplot and ggplot
translate_qplot_lattice

Translating between qplot and lattice
mpg

Fuel economy data from 1999 and 2008 for 38 popular models of car
msleep

An updated and expanded version of the mammals sleep dataset
scale_colour_hue

Evenly spaced colours for discrete data
should_stop

Used in examples to illustrate when errors should occur.
scale_identity

Use values without scaling
theme

Modify components of a theme
stat_ecdf

Compute empirical cumulative distribution
transform_position

Convenience function to transform all position variables.
update_geom_defaults

Modify geom/stat aesthetic defaults for future plots
update_labels

Update axis/legend labels