如何在 ggplot2 (R) 中为多个 geom_line 图创建具有不同 alpha 的图例
How to create legend with differing alphas for multiple geom_line plots in ggplot2 (R)
我有以下两年的入学数据。 我想在我的情节和图例中通过给它一个不同的 alpha 来突出显示学校 H 的数据。
library(tidyverse)
schools <- c("A","B","C","D","E",
"F","G","H","I","J")
yr2010 <- c(601,809,604,601,485,485,798,662,408,451)
yr2019 <- c(971,1056,1144,933,732,833,975,617,598,822)
data <- data.frame(schools,yr2010,yr2019)
我做了一些数据管理,为绘图准备好数据。
data2 <- data %>%
gather(key = "year", value = "students", 2:3)
data2a <- data2 %>%
filter(schools != "H")
data2b <- data2 %>%
filter(schools == "H")
然后我尝试使用两个单独的 geom_line 图来绘制数据图,一个用于默认 alpha 和 size=1.5 的学校 H,另一个用于 alpha=.3 和 size=1 的其余学校。
ggplot(data2, aes(x=year,y=students,color=schools,group=schools)) +
theme_classic() +
geom_line(data = data2a, alpha=.3, size=1) +
scale_color_manual(values=c("red","orange","green","skyblue","aquamarine","purple",
"pink","brown","black")) +
geom_line(data = data2b, color="blue", size=1.5)
不过,我要强调的学校并不在图例中。所以我试图在 scale_color_manual 而不是 geom_line 调用中包含学校 H 的颜色。
ggplot(data2, aes(x=year,y=students,color=schools,group=schools)) +
theme_classic() +
geom_line(data = data2a, alpha=.3, size=1) +
scale_color_manual(values=c("red","orange","green","skyblue","aquamarine","purple",
"pink","blue","brown","black")) +
geom_line(data = data2b, size=1.5)
然而,现在传说中的alpha都一样了,这并没有像我想要的那样突出H学校。
我如何调用绘图,使图例与所有学校的线本身的 alpha 相匹配?
您需要像放置颜色一样在 aes 中放置 alpha 和大小类别。然后,您可以根据需要使用 scale_alpha_manual 和 scale_size_manual。此外,这样就不需要创建 data2a 和 data2b。
见下面的代码:
ggplot(data2, aes(x=year,y=students,color=schools,group=schools,
alpha=schools, size = schools)) +
theme_classic() +
geom_line() +
scale_color_manual(values=c("red","orange","green","skyblue","aquamarine","purple",
"pink","blue","brown","black")) +
scale_alpha_manual(values = c(0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3,NA, 0.3, 0.3)) +
#for the default alpha, you can write 1 or NA
scale_size_manual(values= c(1,1,1,1,1,1,1,1.5,1,1))
The code brings this plot. Please click.
希望有用。
我有以下两年的入学数据。 我想在我的情节和图例中通过给它一个不同的 alpha 来突出显示学校 H 的数据。
library(tidyverse)
schools <- c("A","B","C","D","E",
"F","G","H","I","J")
yr2010 <- c(601,809,604,601,485,485,798,662,408,451)
yr2019 <- c(971,1056,1144,933,732,833,975,617,598,822)
data <- data.frame(schools,yr2010,yr2019)
我做了一些数据管理,为绘图准备好数据。
data2 <- data %>%
gather(key = "year", value = "students", 2:3)
data2a <- data2 %>%
filter(schools != "H")
data2b <- data2 %>%
filter(schools == "H")
然后我尝试使用两个单独的 geom_line 图来绘制数据图,一个用于默认 alpha 和 size=1.5 的学校 H,另一个用于 alpha=.3 和 size=1 的其余学校。
ggplot(data2, aes(x=year,y=students,color=schools,group=schools)) +
theme_classic() +
geom_line(data = data2a, alpha=.3, size=1) +
scale_color_manual(values=c("red","orange","green","skyblue","aquamarine","purple",
"pink","brown","black")) +
geom_line(data = data2b, color="blue", size=1.5)
不过,我要强调的学校并不在图例中。所以我试图在 scale_color_manual 而不是 geom_line 调用中包含学校 H 的颜色。
ggplot(data2, aes(x=year,y=students,color=schools,group=schools)) +
theme_classic() +
geom_line(data = data2a, alpha=.3, size=1) +
scale_color_manual(values=c("red","orange","green","skyblue","aquamarine","purple",
"pink","blue","brown","black")) +
geom_line(data = data2b, size=1.5)
然而,现在传说中的alpha都一样了,这并没有像我想要的那样突出H学校。
我如何调用绘图,使图例与所有学校的线本身的 alpha 相匹配?
您需要像放置颜色一样在 aes 中放置 alpha 和大小类别。然后,您可以根据需要使用 scale_alpha_manual 和 scale_size_manual。此外,这样就不需要创建 data2a 和 data2b。
见下面的代码:
ggplot(data2, aes(x=year,y=students,color=schools,group=schools,
alpha=schools, size = schools)) +
theme_classic() +
geom_line() +
scale_color_manual(values=c("red","orange","green","skyblue","aquamarine","purple",
"pink","blue","brown","black")) +
scale_alpha_manual(values = c(0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3,NA, 0.3, 0.3)) +
#for the default alpha, you can write 1 or NA
scale_size_manual(values= c(1,1,1,1,1,1,1,1.5,1,1))
The code brings this plot. Please click.
希望有用。