Chapter 10 ggplot2_cheatsheet

Xiaorui Zhang

10.1 Some Advanced Techs from ggplot2

10.2 Dataset

library(ggplot2)
library(dplyr)
## [, 1]    mpg Miles/(US) gallon
## [, 2]    cyl Number of cylinders
## [, 3]    disp    Displacement (cu.in.)
## [, 4]    hp  Gross horsepower
## [, 5]    drat    Rear axle ratio
## [, 6]    wt  Weight (1000 lbs)
## [, 7]    qsec    1/4 mile time
## [, 8]    vs  Engine (0 = V-shaped, 1 = straight)
## [, 9]    am  Transmission (0 = automatic, 1 = manual)
## [,10]    gear    Number of forward gears
## [,11]    carb    Number of carburetors
head(mtcars)
##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

10.3 Facet

10.4 Facet layer basics

ggplot(mtcars, aes(wt, mpg)) + 
  geom_point() +
  ## Facet rows by am and columns by cyl
  facet_grid(rows = vars(am),cols = vars(cyl))

10.5 Many variables

mtcars$fcyl_fam <- interaction(mtcars$cyl,mtcars$am,sep = ":")

## Update the plot
ggplot(mtcars, aes(x = wt, y = mpg, color = fcyl_fam, size = disp)) +
  geom_point() +
  scale_color_brewer(palette = "Paired") +
  ## Grid facet on gear and vs
  facet_grid(rows = vars(gear), cols = vars(vs))

10.6 Formula notation

ggplot(mtcars, aes(wt, mpg)) + 
  geom_point() +
  ## Facet rows by am using formula notation
  facet_grid(am ~ .)

ggplot(mtcars, aes(wt, mpg)) + 
  geom_point() +
  ## Facet columns by cyl using formula notation
  facet_grid(. ~ cyl)

ggplot(mtcars, aes(wt, mpg)) + 
  geom_point() +
  ## Facet rows by am and columns by cyl using formula notation
  facet_grid(am ~ cyl)

10.7 Labeling facets

## Plot wt by mpg
ggplot(mtcars, aes(wt, mpg)) +
  geom_point() +
  ## Displaying both the values and the variables
  facet_grid(cols = vars(cyl), labeller = label_both)

## Plot wt by mpg
ggplot(mtcars, aes(wt, mpg)) +
  geom_point() +
  ## Label context
  facet_grid(cols = vars(cyl), labeller = label_context)

10.8 Coordinates

10.9 Expand and clip

## Expand sets a buffer margin around the plot, so data and axes don't overlap. 
## Setting expand to 0 draws the axes to the limits of the data.
## Clip decides whether plot elements that would lie outside the plot panel 
## are displayed or ignored ("clipped").

ggplot(mtcars, aes(wt, mpg)) +
  geom_point(size = 2) +
  ## Add Cartesian coordinates with zero expansion
  coord_cartesian(expand = 0) +
  theme_classic()

ggplot(mtcars, aes(wt, mpg)) +
  geom_point(size = 2) +
  ## Turn clipping off
  coord_cartesian(expand = 0, clip = "off") +
  theme_classic() +
  ## Remove axis lines
  theme(axis.line = element_blank())

10.10 Flipping axes

## Plot fcyl bars, filled by fam
ggplot(mtcars, aes(as.factor(cyl), fill = as.factor(am))) +
  ## Place bars side by side
  geom_bar(position = "dodge")

ggplot(mtcars, aes(as.factor(cyl), fill = as.factor(am))) +
  geom_bar(position = "dodge") +
  ## Flip the x and y coordinates
  coord_flip()

ggplot(mtcars, aes(as.factor(cyl), fill = as.factor(am))) +
  ## Set a dodge width of 0.5 for partially overlapping bars
  geom_bar(position = position_dodge(width = 0.5)) +
  coord_flip()

10.11 Pie charts

## Run the code, view the plot, then update it
ggplot(mtcars, aes(x = 1, fill = as.factor(cyl))) +
  geom_bar()+
  ## Add a polar coordinate system
  coord_polar(theta = "y")

ggplot(mtcars, aes(x = 1, fill = as.factor(cyl))) +
  ## Reduce the bar width to 0.1
  geom_bar(width = 0.1) +
  coord_polar(theta = "y") +
  ## Add a continuous x scale from 0.5 to 1.5
  scale_x_continuous(limits = c(0.5,1.5))

10.12 Conclusion

This is only a little part of ggplot2, and then in my additional resources, compared with ggplot2, everyone can learn the visualization tools from Python if needed.