# Chapter 12 Using facets to split up your plot

## 12.1 Facetting by one variable

ggplot(data = penguins) + geom_point(aes(x = bill_length_mm,
y = bill_depth_mm, colour = species)) + facet_grid(~species,
scales = "free")  # the scale of the y axis can vary between facets.

# do not do this if you are comparing facets via the y
# axis!

## 12.2 Facetting by two variables

ggplot(data = penguins) + geom_point(aes(x = bill_length_mm,
y = bill_depth_mm, colour = species)) + facet_grid(year ~
species, scales = "free")

## 12.3 Title and axes components: size, colour and face

Let us come back to our default plot that we have been building on.

# Let's come back to our penguin plot from before
pp

We can tune the axes and titles to make the information clearer, so the plot can speak for itself.

## 12.4 Challenge 3

Use the tips dataset found in reshape2 📦 to reproduce the plot below.

# install and load the package
install.packages("reshape2")
## Installing package into '/home/runner/work/_temp/Library'
## (as 'lib' is unspecified)
library(reshape2)

Our tip: Go step by step! When fine-tuning your plot, start from theme_classic() and add theme() to make your additional changes.

### 12.4.1 Challenge 3: Solution

# Build the plot
tips.gg <- ggplot(tips,
# Step 1. Specify the aesthetic mapping from the axes and the legends
aes(x = total_bill,
y = tip/total_bill,
shape = smoker,
colour = sex,
size = size)) +
# Step 2. Specify the geom used to represent the data
geom_point() +
# Step 3. Specify the variable used to make facets
facet_grid( ~ time) +
# Step 4. set the colour scale used to represent sex
scale_colour_grey() +
# Step 5. Label the plot title and axes
labs(title = "Relation between total bill and tips during lunch and dinner",
x = "Total bill (\$)",
y = "Ratio between tips and total bill") +
# Step 6. Set the theme
theme_classic() +
# Step 7. Customise the theme to match the sizing and colour of the plot labels
theme(axis.title = element_text(size = 16,
colour = "navy"),
axis.text = element_text(size = 12),
plot.title = element_text(size = 16,
colour = "orange3",
face = "bold"),
# this part adjusts the text in the facet labels (strips!)
strip.text.x = element_text(size = 14, face="bold"))
# print our beautiful plot!
tips.gg