[英]Shade area between lines with ggplot2
我想遮蔽分組線之間的區域。 我嘗試了不同的方法,但我無法做到。
df <- data.frame(year = rep(c(1950:1955), each = 2),
gender = factor(rep(c("male", "female"), times = 6)),
value = c(40526812, 37450509, 43027405,
40135682, 45801088, 43130369,
48579427, 46077640, 50948574,
48493786, 53052094, 50537984))
df |>
ggplot(aes(year, value, group = gender)) +
geom_line()
提前致謝!
您可以使用geom_ribon
它允許對軸值內的區域進行着色。
更強的 alpha 將在着色器強度上發揮作用。
ggplot(data=df, aes(year, value, group = gender)) +
geom_line() +
geom_ribbon(data=subset(df, 1950 <= year & year <= 1955),
aes(ymin=rep(subset(df, gender=='female')$value, each=2),
ymax=rep(subset(df, gender=='male')$value, each=2)), fill="blue", alpha=0.5)
您可以通過使用pivot_wider
geom_ribbon
創建區域的ymax
和ymin
來定義區域的邊界,這樣您就不需要對每個參數進行子集化。 所以它會更容易重現。 這里有一個例子:
df <- data.frame(year = rep(c(1950:1955), each = 2),
gender = factor(rep(c("male", "female"), times = 6)),
value = c(40526812, 37450509, 43027405,
40135682, 45801088, 43130369,
48579427, 46077640, 50948574,
48493786, 53052094, 50537984))
library(ggplot2)
library(dplyr)
library(tidyr)
area <- df %>%
pivot_wider(names_from = gender, values_from = value) %>%
mutate(
ymax = pmax(male, female),
ymin = pmin(male, female)
)
ggplot(data = df, mapping = aes(year, y = value, group = gender)) +
geom_line() +
geom_ribbon(data = area, mapping = aes(year, ymin = ymin, ymax = ymax), alpha = 0.4, inherit.aes = FALSE )
由reprex 包於 2022-07-22 創建 (v2.0.1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.