这是我正在使用的 df
的粗略近似:
months <- 1:12
age_y <- rep(0:2, 4)
counts <- c(659, 508, 430, 303, 201, 180, 203, 318, 401, 500, 790, 630)
df <- cbind.data.frame(months, age_y, counts)
ggplot(df, aes(x = months, y = counts)) + geom_area() + facet_grid(.~age_y)
我想要做的是在不同方面为不同颜色的特定区域着色。具体来说,使用上面的虚拟数据,我想为该区域着色:
从
x = 5
到 x = 6.25
中的 facet 0
红色从
x = 6.25
到 x = 10
蓝色的 facet 0
从
x = 6.25
到 x = 7.5
中的 facet 1
红色从
x = 7.5
到 x = 10
蓝色的 facet 1
从
x = 7.5
到 x = 8.75
中的 facet 2
红色从
x = 8.75
到 x = 10
蓝色的 facet 2
最佳答案
鉴于你的例子
library(ggplot2)
months <- 1:12
age_y <- rep(0:2, 4)
counts <- c(659, 508, 430, 303, 201, 180, 203, 318, 401, 500, 790, 630)
df <- cbind.data.frame(months, age_y, counts)
ggplot(df, aes(x = months, y = counts)) + geom_area() + facet_grid(.~age_y) -> p
你可以
f <- lapply(split(df[,c("months", "counts")], df$age_y), function(dat) approxfun(dat$months, dat$counts) )
p + scale_fill_identity() +
mapply(function(xmin,xmax,facet,col,res=.001)
geom_area(
data = data.frame(
age_y=facet,
months = seq(xmin, xmax, res),
counts = f[[facet]](seq(xmin, xmax, res)),
col = col),
aes(fill=col)
), c(5,6.25,6.25),c(6.25,10,10),c("0","0","1"),c("red","blue", "blue"))
... 等等:
关于r - 在多个方面的可变 x 位置手动为 geom_area 添加颜色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38384755/