Используя некоторые сводные данные о пробелах о средней продолжительности жизни по регионам мира в качестве примера данных, этого можно достичь следующим образом.
Основная идея c состоит в том, чтобы использовать именованные векторы для определения значений для затем можно использовать через scale_xxx_manual
для установки color
, linetype
и size
строк:
library(ggplot2)
vizdata <- structure(list(year = c(
2010L, 2010L, 2010L, 2010L, 2011L, 2011L,
2011L, 2011L, 2012L, 2012L, 2012L, 2012L, 2013L, 2013L, 2013L,
2013L, 2014L, 2014L, 2014L, 2014L, 2015L, 2015L, 2015L, 2015L,
2010L, 2011L, 2012L, 2013L, 2014L, 2015L
), region = c(
"Africa",
"Americas", "Asia", "Europe", "Africa", "Americas", "Asia", "Europe",
"Africa", "Americas", "Asia", "Europe", "Africa", "Americas",
"Asia", "Europe", "Africa", "Americas", "Asia", "Europe", "Africa",
"Americas", "Asia", "Europe", "World", "World", "World", "World",
"World", "World"
), life_exp = c(
61.0055555555556, 73.3484848484848,
71.9498113207547, 77.4325581395349, 61.1925925925926, 74.4, 72.1739622641509,
77.746511627907, 61.9648148148148, 74.5515151515151, 72.3358490566038,
78, 62.3611111111111, 74.6666666666667, 72.5845283018868, 78.2348837209302,
62.5907407407407, 74.8515151515151, 72.708679245283, 78.3906976744186,
63.0648148148148, 75.0181818181818, 72.8515094339623, 78.5279069767442,
70.2608743169399, 70.6443715846995, 71.0060109289617, 71.2709289617486,
71.4445901639344, 71.6881420765027
)), row.names = c(NA, -30L), class = c(
"tbl_df",
"tbl", "data.frame"
))
names_regions <- setdiff(unique(vizdata$region), "World")
n_regions <- length(names_regions)
cols <- c(World = "blue", setNames(scales::hue_pal()(n_regions), names_regions))
ltys <- c(World = "dashed", setNames(rep("solid", n_regions), names_regions))
sizes <- c(World = 2, setNames(rep(1, n_regions), names_regions))
viz1 <- ggplot(vizdata, aes(x=year,y=life_exp)) +
geom_line(aes(color = region, linetype = region, size = region)) +
geom_point(aes(color = region),size = 2) +
scale_color_manual(values = cols) +
scale_linetype_manual(values = ltys) +
scale_size_manual(values = sizes) +
labs(title = "Yield for Winter Wheat", subtitle = "Winter wheat yield throughout the UK between 2009 and 2018", y = "Yield [t/ha]") +
scale_x_continuous(breaks=seq(2009, 2018, 1))
viz1
Создано 2020- 06-18 с помощью пакета REPEX (v0.3.0)