0% found this document useful (0 votes)
312 views2 pages

Ggplot2 Cheatsheet

- Geoms are used in ggplot2 to represent data points by mapping their aesthetic properties like size, color, and position to variables in the data. Common geoms include points, lines, histograms, and density plots. - ggplot2 builds graphs from layers including a data set, geoms to represent the data, and a coordinate system. It follows a grammar of graphics that allows building complex plots from simple components. - Common plots include scatter plots for continuous x and y variables, histograms and density plots for one continuous variable, and bar plots for discrete variables. Multiple geoms can be combined in one plot for tasks like adding error bars or density curves.

Uploaded by

wroin1
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
Download as pdf or txt
0% found this document useful (0 votes)
312 views2 pages

Ggplot2 Cheatsheet

- Geoms are used in ggplot2 to represent data points by mapping their aesthetic properties like size, color, and position to variables in the data. Common geoms include points, lines, histograms, and density plots. - ggplot2 builds graphs from layers including a data set, geoms to represent the data, and a coordinate system. It follows a grammar of graphics that allows building complex plots from simple components. - Common plots include scatter plots for continuous x and y variables, histograms and density plots for one continuous variable, and bar plots for discrete variables. Multiple geoms can be combined in one plot for tasks like adding error bars or density curves.

Uploaded by

wroin1
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
Download as pdf or txt
Download as pdf or txt
You are on page 1/ 2

Geoms

Data Visualization

- Use a geom to represent data points, use the geoms aesthetic properties to represent variables. Each function returns a layer.

One Variable

with ggplot2

Two Variables

Continuous

Cheat Sheet

Continuous X, Continuous Y
f <- ggplot(mpg, aes(cty, hwy))

a <- ggplot(mpg, aes(hwy))

with ggplot2

Cheat Sheet
Data Visualization
Basics

i + geom_bin2d(binwidth = c(5, 0.5))

f + geom_blank()

a + geom_area(stat = "bin")

Data Visualization

Continuous Bivariate Distribution


i <- ggplot(movies, aes(year, rating))
xmax, xmin, ymax, ymin, alpha, color, fill,
linetype, size, weight

Geomsx,-y,Usealpha,
a geomcolor,
to represent
data points,size
use the geoms aesthetic properties to represent variables
fill, linetype,
One Variableb + geom_area(aes(y = ..density..), stat = "bin")
Continuous
a+

i + geom_density2d()

Two Variables f + geom_jitter()

X, Continuous Y
Continuous Bivariate Distribution
= "gaussian")
Geoms geom_density(kernel
- Use a geom to represent Continuous
data
points,
use the
geoms
aesthetic properties to
represent
variables
x,
y, alpha,
color, fill,
shape, size
h <ggplot(movies,
aes(year,
rating))
f <- ggplot(mpg,
aes(cty,
hwy))

x, y, alpha, color, fill, linetype,


size, weight
f + geom_blank()
One Variable
Two Variablesh + geom_bin2d(binwidth = c(5, 0.5))
a + geom_area(stat
= "bin")
with ggplot2
xmin, ymax, ymin, alpha, color, fill,
b
+
geom_density(aes(y
=
..county..))
f xmax,
+ geom_point()
Continuous X, Continuous Y
Continuous
x, y, alpha, Continuous
color, fill, linetype, size
linetype, size,Bivariate
weight Distribution
ggplot2 is based on the
grammar
h <- ggplot(movies, aes(year, rating))
f <- ggplot(mpg, aes(cty, hwy))
Cheat
Sheet of graphics, the b + geom_area(aes(y
=
..density..),
stat
=
"bin")
a <- ggplot(mpg, aes(hwy))
a + geom_dotplot() f + geom_jitter()
h + x,
geom_density2d()
y,
alpha,
color, fill, shape, size
idea that you can build every graph from the same a + geom_density(kernal = "gaussian")
hx,+y,geom_bin2d(binwidth
= c(5, 0.5))
f x,
+ geom_blank()
alpha, colour, linetype, size
y, alpha, color, fill, shape, size
ax,+y,geom_area(stat
=
"bin")
x,
y,
alpha,
color,
fill
color, fill, linetype, size, weight
xmax, xmin, ymax, ymin, alpha, color, fill,
Basics
few components: a data
set, a set of geomsvisual x, y,alpha,
alpha, color, fill, linetype,
size
linetype,
size, weight
b + geom_density(aes(y
= ..county..))
hf ++
geom_hex()
f + geom_point()
geom_quantile()
+ geom_area(aes(y = ..density..), stat = "bin")
marks that represent data points, and a coordinate a+bgeom_dotplot()
hx,+y,geom_density2d()
f x,
+ geom_jitter()
alpha, colour, fill size
y, alpha, color, fill, shape, size
ax,+y,geom_density(kernal
=
"gaussian")
x,x,
y, y,
alpha,
colour, color,
linetype, size
alpha,
linetype, size, weight
alpha, color, fill a + geom_freqpoly() x, y, alpha, color, fill, shape, size
system. F M A
x, y, alpha, color, fill, linetype,
size, weight
Basics
Continuous Function
f + geom_quantile()
b + geom_density(aes(y =x,..county..))
h + geom_hex() aes(date, unemploy))
g <- ggplot(economics,
f x,
+ geom_point()
y, alpha, color, linetype,
sizecolor, linetype, size, weight
y, alpha,
a + geom_freqpoly()
a+ geom_dotplot()
x,geom_area()
y,geom_rug(sides
alpha, colour, fill size
x, y, alpha, color, fill, shape, size
f
= "bl")
+
=
g
++
x, y, alpha, color, linetype,b
size
+ geom_freqpoly(aes(y
= ..density..))
x, y, alpha, color, fill
f
+
geom_rug(sides
=
"bl")
x,alpha,
y, alpha, color,
fill, linetype,
size size
b + geom_freqpoly(aes(y = ..density..))
F MA
color,
linetype,
Continuous Function
f alpha,
+ geom_quantile()
color, linetype, size
4

a + geom_histogram(binwidth
= 5)
a + geom_histogram(binwidth
= 5)
g <- ggplot(economics, aes(date, unemploy))
x, y, alpha, color, linetype, size, weight
g + geom_line()
ax,+y,geom_freqpoly()
alpha, color, fill, linetype, size, weight
f
+
geom_smooth(model
= lm)
x,
y,
alpha,
color,
fill,
linetype,
size,
weight
+y,geom_area()
alpha, color, linetype, size
x,
y,
alpha,
color,
linetype,
size
1
1
b + geom_histogram(aes(y = ..density..))
fgx,+
geom_smooth(model
= lm)
f x,
+ geom_rug(sides
= "bl") size, weight
y, alpha, color, fill, linetype,
x, y, alpha, color, fill, linetype, size
b + geom_freqpoly(aes(yb
= ..density..))
0
0
+
geom_histogram(aes(y
=
..density..))
alpha,
color,
linetype,
size
Discrete
1
0
1
0
3
4
3
4
g + x,
geom_step(direction
=
"hv")
2
2 variables
To display data
values,
map
in
the
data
set
a + geom_histogram(binwidth
= 5)
y, alpha, color, fill, linetype, size, weight
data geom coordinate
plot
f + geom_text(aes(label = cty))
gx,+y,geom_line()
alpha, color, linetype, size
<- ggplot(mpg,
aes(fl))size, weight
4
x, y,aalpha,
color, fill, linetype,
F M
A x = F 4 ofsystem
to aesthetic
properties
the geom
like size, color,
f x,
+ geom_smooth(model
= lm)
Discrete
y, label, alpha, angle, color,
family, fontface,
y=A
x,
y,
alpha, color, linetype, size
3
3
+ geom_histogram(aes(y = ..density..))
b +bgeom_bar()
hjust,
lineheight,
vjust size, weight
x, y, alpha,
color,size,
fill, linetype,
and x and y locations.2
f
+
geom_text(aes(label
= cty))
Visualizing error
2
x, alpha, color,
fill,
linetype,
size,
weight
b <- ggplot(mpg, aes(fl))
Discrete
g + geom_step(direction
= "hv")
df <- data.frame(grp
= c("A", "B"), fit
= 4:5, se = 1:2)
1
1
f + geom_text(aes(label = cty))
x,
y,
label,
alpha,
angle,
color,
x,
y,
alpha,
color,
linetype,
size
a
<ggplot(mpg,
aes(fl))
e <- ggplot(df, aes(grp, fit, ymin = fit-se, ymax = fit+se)) family, fontface,
F MA
04
04
Discrete
X, Continuous
Y
x, y, label, alpha,
angle, color, family,
fontface,
b + geom_bar()
1
0
1
0
3
4
3
4
2
2
hjust, lineheight, size, vjust
3
3
b
+
geom_bar()
g <ggplot(mpg,
Graphical Primitives
hjust,
lineheight,aes(class,
size, vjust hwy))
data geom coordinate
plot
e + geom_crossbar(fatten
Visualizing error= 2)
2
2
x, alpha, color, fill, linetype,
size,
weightcolor, fill, linetype, size, weight
system
x=F
x,
alpha,
y=A
df <- data.frame(grp
= c("A",
"B"),
fit =fill,4:5,
se = 1:2)
x, y, ymax, ymin,
alpha,
color,
linetype,
1
g + geom_bar(stat = "identity")
color = F 1
size aes(grp, fit, ymin = fit-se, ymax = fit+se))
c <- ggplot(map, aes(long, lat))
size = A
e <- ggplot(df,
0
0
x,Discrete
y, alpha, color,
fill, linetype, size,
weight
X,
Continuous
Y
1
0
1
0
3
4
3
4
2
2
e + geom_errorbar()
c + geom_polygon(aes(group
g <- ggplot(mpg, aes(class, hwy))
Graphical Primitives= group))
data geom coordinate
plot
Discrete
Continuous
Y
ex,+ymax,
geom_crossbar(fatten
= 2)
ymin, alpha,X,
color,
linetype,
size,
g + geom_boxplot()
x, y, alpha, color, fill, linetype, size
system
x=F
y=A
(also
geom_errorbarh())
x, <y, ymax,
ymin,
alpha, color,aes(class,
fill, linetype,
gwidth
ggplot(mpg,
hwy))
glower,
+ geom_bar(stat
middle, upper,=x,"identity")
ymax, ymin, alpha,
color = F
c <- ggplot(map, aes(long, lat))
size = A
e +size
geom_linerange()
color,
fill, linetype,
shape,
size, size,
weight
x, y, alpha,
color, fill,
linetype,
weight
ex,+ymin,
geom_errorbar()
ymax, alpha, color, linetype, size
c + geom_polygon(aes(group = group))
g + geom_dotplot(binaxis = "y",
g <- ggplot(economics, aes(date, unemploy))
g x,+ymax,
geom_bar(stat
= "identity")
ymin, alpha, color, linetype,
size,
gstackdir
+ geom_boxplot()
Build a graph with qplot() or ggplot()
x, y, alpha, color, fill, linetype, size
= "center")
(also geom_errorbarh())
e +width
geom_pointrange()
x,lower,
y, alpha,
color,
fill x, ymax, ymin, alpha,
g + geom_path(lineend="butt",
c <- ggplot(map, aes(long,
lat))
middle,
upper,
y, alpha,
color,
linetype, size, weight
ex,+x,
fill, linetype, shape,
size, weight
y,geom_linerange()
ymin,
ymax, alpha,
color,fill,
fill, linetype,
linejoin="round, linemitre=1)
geom
aesthetic mappings
g +color,
geom_violin(scale
= "area")
data
shape,
x, ymin,size
ymax, alpha, color, linetype, size
c
+
geom_polygon(aes(group
=
group))
x, y, alpha, color, linetype,
size
gx,+y,geom_dotplot(binaxis
=size,
"y", weight
alpha,
color,
fill,
linetype,
g <- ggplot(economics, aes(date, unemploy))
qplot(x = cty,Fy M
= hwy,
A color4 = cyl, data = 4mpg, geom = "point"g) + geom_ribbon(aes(ymin=unemploy - 900,
stackdir = "center")
Maps
g +geom_pointrange()
geom_boxplot()
sizefill
x, y, alpha, color,
+ 900)) x, y, alpha, color, fill, linetype,
gymax=unemploy
+ geom_path(lineend="butt",
3
3
data e<-+data.frame(murder
= USArrests$Murder,
Creates a complete plot2 with given data,
geom,
and
x,linejoin="round
ymax, ymin, alpha,
color, fill, linetype, size
y,tolower(rownames(USArrests)))
ymin, ymax,
alpha, color,
fill, linetype,
, linemitre=1)
statex,=lower,
g + geom_violin(scale
= "area")
2
middle,
upper,
x, ymax, ymin, alpha,
Discrete X, Discrete
Y
map
<map_data("state")
shape,
size
x, y, alpha, color, linetype, size
mappings. Supplies many
useful defaults.
1
y, alpha, color, fill, linetype,
weight
1
h <-x,ggplot(diamonds,
aes(cut, size,
color))
e <- ggplot(data,
aes(fill
= murder)) shape, size, weight
color,
fill,
linetype,
g + geom_ribbon(aes(ymin=unemploy - 900,
F MA
04
04
Maps = state), map = map) +
e + geom_map(aes(map_id
1
0
1
0
3
4
3
4
2
2
d<-ymax=unemploy
ggplot(seals, aes(x
= long,
y = lat))
h + geom_jitter()
+ 900)
)
3
datag<-+
data.frame(murder
= USArrests$Murder, = "y",
geom_dotplot(binaxis
data geom 3 coordinate
plot
expand_limits(
x = map$long, y = map$lat)
x,
ymax,
ymin,
alpha,
color,
fill,
linetype,
size
state
=
tolower(rownames(USArrests)))
x,
y,
alpha,
color,
fill,
shape,
size
d <- ggplot(economics, aes(date,
unemploy))
2
2
=F
Discrete
X, Discrete Y
ggplot(data = mpg, xyaes(x
=system
cty, y = hwy))
d + geom_segment(aes(
alpha, color, fill, linetype, size
mapmap_id,
<-stackdir
map_data("state")
=A
= "center")
1
1
h <- ggplot(diamonds, aes(cut, color))
xend = long + delta_long,
e <- ggplot(data, aes(fill = murder))
Begins a plot that you finish
by3 adding
layers
to. No yend = lat + delta_lat))
0
0
x,
y,
alpha,
color,= state),
fill map = map) +
+ geom_path(lineend="butt",
e
+
geom_map(
aes(map_id
Three
Variables
1
0
1
0
3
4
4
2
2
d<- ggplot(seals, aes(x d
= long,
y = lat))
h + geom_jitter()
x, xend, y, yend, alpha, color, linetype, size
geom more
coordinate
plotqplot().
expand_limits(
x
=
map$long,
= map$lat)
defaults, butdata
provides
control
than
linejoin="round
, linemitre=1)
x, y, alpha, color,
fill, shape, size+ delta_lat^2))
++
geom_raster(aes(fill
= z),yhjust=0.5,
seals$z
<- with(seals,
sqrt(delta_long^2
gi map_id,
geom_violin(scale
= "area")
x=F
system
geom_segment(aes(= long, ymin = lat,
alpha, color, fill, linetype, size
dd++geom_rect(aes(xmin
y=A
i
<ggplot(seals,
aes(long,
lat))
vjust=0.5,
interpolate=FALSE)
data
xend =long
long++delta_long,
delta_long,
x,
y,
alpha,
color,
linetype,
size
xmax=
x, y, alpha, color, fill, linetype, size, weight
add layers, ymax
yend == lat
lat ++ delta_lat))
delta_lat))
Three Variables x, y, alpha, fill
i + geom_contour(aes(z = z))
elements with + xmax,
i
+
geom_tile(aes(fill = z))
x, xend,
y,
yend,
alpha,
color,
linetype,
size
d
+
geom_ribbon(
aes(ymin=unemploy
900,
xmin, ymax, ymin, alpha, color, fill,
ggplot(mpg, aes(hwy, cty)) +
i +x, geom_raster(aes(fill
= z),size
hjust=0.5,
seals$z <-x,with(seals,
+ delta_lat^2))
y, z, alpha, sqrt(delta_long^2
colour, linetype, size,
weight
y, alpha, color, fill, linetype,
linetype,
size
ymax=unemploy
+
900)
)
d
+
geom_rect(aes(xmin
=
long,
ymin
=
lat,
geom_point(aes(color = cyl)) +
layer = geom +
i <- ggplot(seals, aes(long, lat))
vjust=0.5, interpolate=FALSE)
long + delta_long,
x, ymax, ymin, alpha, color, fill, linetype, size
default stat + xmax=
geom_smooth(method
="lm") +
x, y, alpha, fill
ymax
= lat + delta_lat))
RStudio is a trademark of RStudio, Inc. CC BY RStudio info@rstudio.com 844-448-1212
rstudio.com
Learn more at docs.ggplot2.org
ggplot2
Updated: 3/15Y
Discrete
X, 0.9.3.1
Discrete
i + geom_contour(aes(z = z))
layer specific xmax,
i + geom_tile(aes(fill = z))
coord_cartesian() +
xmin, ymax, ymin, alpha, color, fill,
data

x=F
y=A

0
3

geom

i + geom_hex()
x, y, alpha, colour, fill size

Continuous Function
j <- ggplot(economics, aes(date, unemploy))
j + geom_area()
x, y, alpha, color, fill, linetype, size

1
0

x, y, alpha, colour, linetype, size

a <- ggplot(mpg, aes(hwy))

0
3

coordinate
system

plot

AB

Graphical Primitives

scale_color_gradient() +
theme_bw()

mappings

additional
elements

RStudio is a trademark of RStudio, Inc. CC BY RStudio info@rstudio.com 844-448-1212 rstudio.com

Add a new layer to a plot with a geom_*()


or stat_*() function. Each provides a geom, a
set of aesthetic mappings, and a default stat
and position adjustment.
last_plot()
Returns the last plot

ggsave("plot.png", width = 5, height = 5)


Saves last plot as 5 x 5 file named "plot.png" in
working directory. Matches file type to file extension.

x, y, z, alpha, colour, linetype, size, weight

linetype, size

e <- ggplot(seals, aes(x = long, y = lat))

e + geom_segment(aes(
xend = long + delta_long,
yend = lat + delta_lat))
x, xend, y, yend, alpha, color, linetype, size

e + geom_rect(aes(xmin = long, ymin = lat,


xmax= long + delta_long,
ymax = lat + delta_lat))
xmax, xmin, ymax, ymin, alpha, color, fill,
linetype, size

RStudio is a trademark of RStudio, Inc. CC BY RStudio info@rstudio.com 844-448-1212 rstudio.com

h <-x, ggplot(diamonds,
y, alpha, color, fill, linetype, size aes(cut, color))

j + geom_line()
x, y, alpha, color, linetype, size

j + geom_step(direction = "hv")
x, y, alpha, color, linetype, size

Visualizing error

df <- data.frame(grp = c("A", "B"), fit = 4:5, se = 1:2)


k <- ggplot(df, aes(grp, fit, ymin = fit-se, ymax = fit+se))

k + geom_crossbar(fatten = 2)
x, y, ymax, ymin, alpha, color, fill, linetype,
size

k + geom_errorbar()
x, ymax, ymin, alpha, color, linetype, size,
width (also geom_errorbarh())

k + geom_linerange()
x, ymin, ymax, alpha, color, linetype, size

k + geom_pointrange()
x, y, ymin, ymax, alpha, color, fill, linetype,
shape, size

Maps

data <- data.frame(murder = USArrests$Murder,


state = tolower(rownames(USArrests)))
map <- map_data("state")
l <- ggplot(data, aes(fill = murder))

l + geom_map(aes(map_id = state), map = map) +


expand_limits(x = map$long, y = map$lat)

h + geom_jitter()

Learn more at docs.ggplot2.org ggplot2 0.9.3.1 Updated: 3/15

x, y, alpha, color, fill, shape, size

map_id, alpha, color, fill, linetype, size

Three Variables
seals$z <- with(seals, sqrt(delta_long^2 + delta_lat^2))
m <- ggplot(seals, aes(long, lat))

m + geom_contour(aes(z = z))
x, y, z, alpha, colour, linetype, size, weight

m + geom_raster(aes(fill = z), hjust=0.5,


vjust=0.5, interpolate=FALSE)
x, y, alpha, fill

m + geom_tile(aes(fill = z))
x, y, alpha, color, fill, linetype, size
Learn more at docs.ggplot2.org ggplot2 0.9.3.1 Updated: 3/15

Stats - An alternative way to build a layer

Scales

Some plots visualize a transformation of the original data set.


Use a stat to choose a common transformation to visualize,
e.g. a + geom_bar(stat = "bin")

Scales control how a plot maps data values to the visual


values of an aesthetic. To change the mapping, add a
custom scale.

2
1

stat

geom

2
1

scale_

data

n <- b + geom_bar(aes(fill = fl))


n

coordinate
x=x
system
y = ..count..

plot

Each stat creates additional variables to map aesthetics


to. These variables use a common ..name.. syntax.
stat functions and geom functions both combine a stat
with a geom to make a layer, i.e. stat_bin(geom="bar")
does the same as geom_bar(stat="bin")
stat function

layer specific
mappings

variable created
by transformation

i + stat_density2d(aes(fill = ..level..),
geom = "polygon", n = 100)
geom for layer

parameters for stat

a + stat_bin(binwidth = 1, origin = 10)


1D distributions
x, y | ..count.., ..ncount.., ..density.., ..ndensity..
a + stat_bindot(binwidth = 1, binaxis = "x")
x, y, | ..count.., ..ncount..
a + stat_density(adjust = 1, kernel = "gaussian")
x, y, | ..count.., ..density.., ..scaled..
f + stat_bin2d(bins = 30, drop = TRUE)
x, y, fill | ..count.., ..density..
f + stat_binhex(bins = 30)
x, y, fill | ..count.., ..density..
f + stat_density2d(contour = TRUE, n = 100)
x, y, color, size | ..level..

2D distributions

m + stat_contour(aes(z = z))
3 Variables
x, y, z, order | ..level..
m+ stat_spoke(aes(radius= z, angle = z))
angle, radius, x, xend, y, yend | ..x.., ..xend.., ..y.., ..yend..
m + stat_summary_hex(aes(z = z), bins = 30, fun = mean)
x, y, z, fill | ..value..
m + stat_summary2d(aes(z = z), bins = 30, fun = mean)
x, y, z, fill | ..value..

title to use in labels to use in


legend/axis
legend/axis

r + coord_polar(theta = "x", direction=1 )


theta, start, direction
Polar coordinates

Use with any aesthetic:


alpha, color, fill, linetype, shape, size

r + coord_trans(ytrans = "sqrt")
xtrans, ytrans, limx, limy
Transformed cartesian coordinates. Set
extras and strains to the name
of a window function.

scale_*_continuous() - map cont values to visual values


scale_*_discrete() - map discrete values to visual values
scale_*_identity() - use data values as visual values
scale_*_manual(values = c()) - map discrete values to
manually chosen visual values

z + coord_map(projection = "ortho",
orientation=c(41, -74, 0))

Use with x or y aesthetics (x shown here)


scale_x_date(labels = date_format("%m/%d"),
breaks = date_breaks("2 weeks")) - treat x
values as dates. See ?strptime for label formats.
scale_x_datetime() - treat x values as date times. Use
same arguments as scale_x_date().
scale_x_log10() - Plot x on log10 scale
scale_x_reverse() - Reverse direction of x axis
scale_x_sqrt() - Plot x on square root scale

Position adjustments determine how to arrange


geoms that would otherwise occupy the same space.

s <- ggplot(mpg, aes(fl, fill = drv))

s + geom_bar(position = "dodge")
Arrange elements side by side

s + geom_bar(position = "fill")

Continuous

g + stat_boxplot(coef = 1.5)
Comparisons
x, y | ..lower.., ..middle.., ..upper.., ..outliers..
g + stat_ydensity(adjust = 1, kernel = "gaussian", scale = "area")
x, y | ..density.., ..scaled.., ..count.., ..n.., ..violinwidth.., ..width..

n + scale_fill_brewer(
palette = "Blues")
For palette choices:
library(RcolorBrewer)
display.brewer.all()

f + stat_ecdf(n = 40)
Functions
x, y | ..x.., ..y..
f + stat_quantile(quantiles = c(0.25, 0.5, 0.75), formula = y ~ log(x),
method = "rq")
x, y | ..quantile.., ..x.., ..y..
f + stat_smooth(method = "auto", formula = y ~ x, se = TRUE, n = 80,
fullrange = FALSE, level = 0.95)
x, y | ..se.., ..x.., ..y.., ..ymin.., ..ymax..

n + scale_fill_grey(
start = 0.2, end = 0.8,
na.value = "red")

o + scale_fill_gradient(
low = "red",
high = "yellow")
o + scale_fill_gradient2(
low = "red", hight = "blue",
mid = "white", midpoint = 25)

s + geom_bar(position = "stack")
Stack elements on top of one another

f + geom_point(position = "jitter")
Add random noise to X and Y position
of each element to avoid overplotting
Each position adjustment can be recast as a function
with manual width and height arguments
s + geom_bar(position = position_dodge(width = 1))

Manual Shape values

Manual shape values

p + scale_shape(
solid = FALSE)

13

10

4
5

11

0
+
* |
o %
O #

24

19

25

14

20

15

21

12

16
17

18

22
23

Themes
r + theme_bw()

150

100

50

0
c

fl

150

100

50

Size scales
q <- f + geom_point(
aes(size = cyl))

RStudio is a trademark of RStudio, Inc. CC BY RStudio info@rstudio.com 844-448-1212 rstudio.com

q + scale_size_area(max = 6)
Value mapped to area of circle
(not radius)

t + facet_grid(year ~ .)

facet into rows based on year

t + facet_grid(year ~ fl)

facet into both rows and columns

White background
with grid lines

0
c

fl

Grey background
(default theme)

r + theme_classic()

100

50

0
c

fl

White background
no gridlines

r + theme_minimal()

150

Minimal theme

100

50

0
c

t + facet_wrap(~ fl)

wrap facets into a rectangular layout

Set scales to let axis limits vary across facets

t + facet_grid(y ~ x, scales = "free")


x and y axis limits adjust to individual facets
"free_x" - x axis limits adjust
"free_y" - y axis limits adjust
Set labeller to adjust facet labels
t + facet_grid(. ~ fl, labeller = label_both)
fl: d

fl: e

fl: p

fl: r

t + facet_grid(. ~ fl, labeller = label_bquote(alpha ^ .(x)))


c
e
p
r
d
t + facet_grid(. ~ fl, labeller = label_parsed)
c

Labels

t + ggtitle("New Plot Title")

Add a main title above the plot

t + xlab("New X label")
Change the label on the X axis

t + ylab("New Y label")

Use scale functions


to update legend
labels

Change the label on the Y axis

t + labs(title =" New title", x = "New x", y = "New y")


All of the above

Legends
t + theme(legend.position = "bottom")
Place legend at "bottom", "top", "left", or "right"

t + guides(color = "none")
Set legend type for each aesthetic: colorbar, legend,
or none (no legend)

t + scale_fill_discrete(name = "Title",
labels = c("A", "B", "C"))
Set legend title and labels with a scale function.

Zooming

150

r + theme_grey()

count

p + scale_shape_manual(
values = c(3:7))
Shape values shown in
chart on right

Stack elements on top of one another,


normalize height

o + scale_fill_gradientn(
colours = terrain.colors(6))
Also: rainbow(), heat.colors(),
topo.colors(), cm.colors(),
RColorBrewer::brewer.pal()

p <- f + geom_point(
aes(shape = fl))

facet into columns based on fl

fl: c

Position Adjustments

Color and fill scales

Shape scales

60

projection, orientation, xlim, ylim


Map projections from the mapproj package long
(mercator (default), azequalarea, lagrange, etc.)

X and Y location scales

o <- a + geom_dotplot(
aes(fill = ..x..))

ggplot() + stat_function(aes(x = -3:3),


General Purpose
fun = dnorm, n = 101, args = list(sd=0.5))
x | ..y..
f + stat_identity()
ggplot() + stat_qq(aes(sample=1:100), distribution = qt,
dparams = list(df=5))
sample, x, y | ..x.., ..y..
f + stat_sum()
x, y, size | ..size..
f + stat_summary(fun.data = "mean_cl_boot")
f + stat_unique()

xlim, ylim
Flipped Cartesian coordinates

breaks to use in
legend/axis

n <- b + geom_bar(
aes(fill = fl))

t + facet_grid(. ~ fl)

r + coord_flip()

General Purpose scales

Discrete

t <- ggplot(mpg, aes(cty, hwy)) + geom_point()

ratio, xlim, ylim


Cartesian coordinates with fixed aspect
ratio between x and y units

n + scale_fill_manual(
values = c("skyblue", "royalblue", "blue", "navy"),
limits = c("d", "e", "p", "r"), breaks =c("d", "e", "p", "r"),
name = "fuel", labels = c("D", "E", "P", "R"))
range of values to
include in mapping

Facets divide a plot into subplots based on the values


of one or more discrete variables.

r + coord_fixed(ratio = 1/2)

scale specific
arguments

aesthetic prepackaged
to adjust scale to use

lat

count

..count..

xlim, ylim
The default cartesian coordinate system

count

r <- b + geom_bar()
r + coord_cartesian(xlim = c(0, 5))

count

fl cty cyl

Faceting

Coordinate Systems

fl

ggthemes - Package with additional ggplot2 themes

Without clipping (preferred)


t + coord_cartesian(
xlim = c(0, 100), ylim = c(10, 20))
With clipping (removes unseen data points)
t + xlim(0, 100) + ylim(10, 20)
t + scale_x_continuous(limits = c(0, 100)) +
scale_y_continuous(limits = c(0, 100))
Learn more at docs.ggplot2.org ggplot2 0.9.3.1 Updated: 3/15

You might also like