我正在尝试在我的facet_wrap
图的前三个面板上获得一个有阴影的矩形。但是,当我使用geom_rect
时,它会在每个面板上都生成矩形。有没有办法只在前三个面板上选择性地获取矩形?
以下是一些代码
dfTemp = data.frame(value = rnorm(100*4), variable = sort(rep(1:4, 100)),
date = rep(seq.Date(
from = as.Date('2011-01-01', format = '%Y-%m-%d'),
length.out = 100,
by = 'day'), 4))
ggplot(dfTemp) +
geom_rect(aes(xmin = as.Date('2011-02-01', format = '%Y-%m-%d'),
xmax = as.Date('2011-03-01', format = '%Y-%m-%d'),
ymin = -Inf,
ymax = Inf), alpha = 0.2, fill = 'grey') +
geom_line(aes(x = date, y = value, group = variable, color = factor(variable))) +
facet_wrap(~variable , scale = 'free', ncol = 1)
更新1:
我已更新我的代码为
dfTemp = data.frame(value = rnorm(100*4), variable = sort(rep(1:4, 100)),
date = rep(seq.Date(
from = as.Date('2011-01-01', format = '%Y-%m-%d'),
length.out = 100,
by = 'day'), 4))
ggplot(dfTemp) +
geom_rect(data = dfTemp[dfTemp$variable %in% c(2, 3),],
aes(xmin = as.Date('2011-02-01', format = '%Y-%m-%d'),
xmax = as.Date('2011-03-01', format = '%Y-%m-%d'),
ymin = -Inf,
ymax = Inf), alpha = 0.2, fill = 'grey') +
geom_line(aes(x = date, y = value, group = variable, color = factor(variable))) +
facet_wrap(~variable , scale = 'free', ncol = 1)
注意,我现在正在对传递给geom_rect
的数据进行子集处理。但这会导致以下警告:
Warning message: In
[<-.factor
(*tmp*
, rng, value = c(1L, 1L, 1L, 1L, 1L, 1L, : invalid factor level, NA generated
这是什么意思?