在x轴上绘制时间序列时,对ggplot中的一个面使用annotate(“ rect”)

时间:2019-04-18 14:38:31

标签: r ggplot2 facet annotate

我在刻面上绘制了不同的时间序列,我想使用annotate()为一个刻面创建不同的背景色。一个方面代表2018年的最后15周(第38-52周),而另一个方面代表2019年的前15周(第1-15周)。我只想在2019年的5-8周内更改背景色。但是,当我尝试这样做时,R会将2018年x轴的范围从38-52周更改为1-52周。

我试图在2019年的图中仅在5-8周内创建一个矩形,如下所示:

annotate("rect", xmin = 5, xmax = 8, min = 0, ymax = Inf, alpha = 0.3, fill="grey") +

我使用的代码是:

library(ggthemes)
week <- c(38:52, 1:15)
minutes <- sample(160, 30, replace=T)
year <- c(rep(2018, 15), rep(2019,15))
dat <- data.frame(year, week, minutes)

ggplot(dat, aes(week, minutes, group=year)) +
  annotate("rect", xmin = 5, xmax = 8, min = 0, ymax = Inf, alpha = 0.3, fill="grey") +
  geom_line(size=1, color="black") +
  geom_point(size=2, color="black") +
  theme_fivethirtyeight() +
  facet_wrap(~ year, scales = "free") +
  scale_y_continuous(limits=c(0,200))

我希望有两个方面:一个是x轴范围在38-52之间的2018年结果,另一个是x轴范围介于1-15之间的2019年结果。 实际结果是x轴范围在1-52之间的2018年结果之一,x轴范围在1-15之间的2019年结果。

1 个答案:

答案 0 :(得分:2)

<FlatList data={props.category} renderItem={({item}) =>{ const maxWidth = Dimensions.get('window').width; return( <Card style={styles.fullCard}> <AutoHeightImage source={{uri:item.imagepath}} width={maxWidth-20}/> </Card> ) } } /> 无法执行此操作,因为您无法为其提供构面变量(Annotate),但是可以使用year执行此操作。为此,您必须传递包含刻面水准(geom_rect)的数据框:

感谢@aosmith ,现在geom_rect仅绘制一次:

year

这将产生所需的图:

enter image description here