This post explains how to build a line chart that represents several groups with ggplot2. It provides several examples with explanation and reproducible code.
If you’re not familiar with the geom_line()
function,
you should probably have a look to the
most basic line chart first.
Here, the input data frame is composed by 3 columns:
The idea is to draw one line per group. This is doable by specifying
a different color to each group with the color
argument
of ggplot2
.
# Libraries
library(ggplot2)
library(babynames) # provide the dataset: a dataframe called babynames
library(dplyr)
# Keep only 3 names
don <- babynames %>%
filter(name %in% c("Ashley", "Patricia", "Helen")) %>%
filter(sex=="F")
# Plot
don %>%
ggplot( aes(x=year, y=n, group=name, color=name)) +
geom_line()
Several options are available to customize the line chart appearance:
ggtitle()
.shape
,
size
, color
and more.
viridis
package to get a nice color palette.
theme_ipsum()
function of the
hrbrthemes
package.
More generally, visit the [ggplot2 section] for more ggplot2 related stuff.
# Libraries
library(ggplot2)
library(babynames) # provide the dataset: a dataframe called babynames
library(dplyr)
library(hrbrthemes)
library(viridis)
# Keep only 3 names
don <- babynames %>%
filter(name %in% c("Ashley", "Patricia", "Helen")) %>%
filter(sex=="F")
# Plot
don %>%
ggplot( aes(x=year, y=n, group=name, color=name)) +
geom_line() +
scale_color_viridis(discrete = TRUE) +
ggtitle("Popularity of American names in the previous 30 years") +
theme_ipsum() +
ylab("Number of babies born")
👋 After crafting hundreds of R charts over 12 years, I've distilled my top 10 tips and tricks. Receive them via email! One insight per day for the next 10 days! 🔥