Facet plotting spaces

Intermediate Data Visualization with ggplot2

Rick Scavetta

Founder, Scavetta Academy

Facets and variable plotting spaces

Reasons to not use consistent plotting spaces:

Variable type Subsets contains
Continuous Wildly different ranges
Categorical Different groups
Intermediate Data Visualization with ggplot2

Adjusting the plotting space...

ggplot(msleep2, aes(bodywt_log,
                    brainwt_log)) +
  geom_point(alpha = 0.6, shape = 16) +
  coord_fixed() +
  facet_grid(rows = vars(vore), 
             cols = vars(conservation))

Intermediate Data Visualization with ggplot2

... but not with fixed scales

ggplot(msleep2, aes(bodywt_log,
                         brainwt_log)) +
  geom_point(alpha = 0.6, shape = 16) +
  coord_fixed() +
  facet_grid(rows = vars(vore), 
             cols = vars(conservation),
             scales = "free_x")
Error: coord_fixed doesn't support free scales
Intermediate Data Visualization with ggplot2

Adjusting the plotting space

ggplot(msleep2, aes(bodywt_log, 
                    brainwt_log)) +
  geom_point(alpha = 0.6, shape = 16) +
  facet_grid(rows = vars(vore), 
             cols = vars(conservation),
             scales = "free_x") 

Intermediate Data Visualization with ggplot2

Adjusting the plotting space

ggplot(msleep2, aes(bodywt_log, 
                    brainwt_log)) +
  geom_point(alpha = 0.6, shape = 16) +
  facet_grid(rows = vars(vore), 
             cols = vars(conservation),
             scales = "free_y") 

Intermediate Data Visualization with ggplot2

Adjusting the plotting space

ggplot(msleep2, aes(bodywt_log, 
                    brainwt_log)) +
  geom_point(alpha = 0.6, shape = 16) +
  facet_grid(rows = vars(vore), 
             cols = vars(conservation),
             scales = "free") 

Intermediate Data Visualization with ggplot2

Adjusting the plotting space

ggplot(msleep2, aes(x = bodywt_log, 
                    y = name)) +
  geom_point() +
  facet_grid(rows = vars(vore))

Intermediate Data Visualization with ggplot2

Adjusting the plotting space

ggplot(msleep2, aes(x = bodywt_log, 
                    y = name)) +
  geom_point() +
  # Free the y scales and space
  facet_grid(rows = vars(vore), 
             scales = "free_y")

Intermediate Data Visualization with ggplot2

Adjusting the plotting space

ggplot(msleep2, aes(x = bodywt_log, 
                    y = name)) +
  geom_point() +
  # Free the y scales and space
  facet_grid(rows = vars(vore),
             scales = "free_y", 
             space = "free_y")

Intermediate Data Visualization with ggplot2

Final adjustments

msleep2 <- msleep2 %>% 
  # Arrange from lo to hi weight
  arrange(-bodywt_log) %>% 
  # Redefine factor levels in order
  mutate(name = as_factor(name)) 

# New order is reflected in y axis
ggplot(msleep2, aes(x = bodywt_log,
                    y = name)) +
  geom_point() +
  # Free the y scales and space
  facet_grid(rows = vars(vore),
             scales = "free_y", 
             space = "free_y")

Intermediate Data Visualization with ggplot2

Let's practice!

Intermediate Data Visualization with ggplot2

Preparing Video For Download...