ggplot2:如何标记事件发生的日期 [英] ggplot2: how to mark days when event occurred

查看:62
本文介绍了ggplot2:如何标记事件发生的日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从第二个情节获取信息到第一个情节.

I would like to get information from the second plot onto the first one.

第二个图表示事件发生的天数.它似乎更宽,因为它没有图例,但是它是相同的时标.我选择在第一张图中手动分配颜色.

The second plot represents days when an event occurred. It seems wider because it does not have a legend, but it is the same timescale. I chose to assign colours manually in the first plot.

我想将第二个绘图点/符号叠加在第一个绘图上(即合并它们),以便可以在一个绘图中看到事件.理想情况下,这将是一行在Y上高度为0.33的点,并且在右端将带有字母F标记这些点-高度相同,为0.33.你能帮上忙吗?数据和绘图代码如下:

I would like to overlay the second plot dots/symbols on the first plot (i.e. combine them) so that the events can be seen in one plot. Ideally this would be a line of dots that is at 0.33 height on Y and at the right end it would have letter F marking the dots - at the same height of 0.33. Could you help with that? Data and plot code are below:

情节1:

ggplot(dfSub, aes(x=Date)) + 
  geom_smooth(aes(y=P,col='P'),span=0.5,se=F) + 
  geom_smooth(aes(y=A,col='A'),span=0.5, se=F) + 
  geom_smooth(aes(y=DEP,col='DEP'),span=0.5, se=F) +
  geom_bar(aes(y=R,col='R'),stat="identity",alpha=0.5) +
  scale_color_manual("",
                     values=c('P'='red','A'='purple','DEP'='blue',R='grey')) +
  ylab("Scale 0 to 4")

图2:

ggplot(dfSub, aes(x=Date)) + 
  geom_point(data=subset(dfSub, !is.na(F)), aes(y=F))

数据:

dfSub <- structure(list(Date = structure(c(17539, 17540, 17541, 17542, 
17543, 17544, 17545, 17546, 17547, 17548, 17549, 17550, 17551, 
17552, 17553, 17554, 17555, 17556, 17557, 17558, 17559, 17560, 
17561, 17562, 17563, 17564, 17565, 17566, 17567, 17568, 17569, 
17570, 17571, 17572, 17573, 17574, 17575, 17576, 17577, 17578, 
17579, 17580, 17581, 17582, 17583, 17584, 17585, 17586, 17587, 
17588, 17589, 17590, 17591, 17592, 17593, 17594, 17595, 17596, 
17597, 17598, 17599, 17600, 17601, 17602, 17603, 17604, 17605, 
17606, 17607, 17608, 17609, 17610, 17611, 17612, 17613, 17614, 
17615, 17616, 17617, 17618, 17619, 17620, 17621, 17622, 17623, 
17624, 17625, 17626, 17627, 17628, 17629), class = "Date"), R = c(1, 
2, NA, 1, 1, 2, NA, 1, 1, NA, 1, NA, 1, 1, 1, NA, NA, NA, 1, 
NA, NA, NA, 1, 1, NA, 1, NA, NA, NA, NA, NA, NA, 2, NA, NA, 0, 
1, 1, 1, 0, 1, 0, NA, NA, NA, 1, 1, 1, NA, NA, NA, NA, 1, NA, 
1, 2, 1, 1, 3, 1, NA, 2, NA, NA, 1, 2, 1, 2, NA, NA, 1, NA, NA, 
2, 1, NA, 1, 2, 1, NA, 1, 2, 1, NA, 1, 1, NA, 1, NA, NA, NA), 
    P = c(2, 4, 1, 1, 1, 2, 4, 0, 4, 1, 1, 0, 0, 2, 4, 4, 2, 
    2, 2, 4, 2, 1, 3, 2, 1, 3, 1, 0, 1, NA, 2, NA, 4, 4, 1, 3, 
    4, 4, 3, 2, 4, 4, 3, 0, 0, 2, 1, 3, 2, 0, 0, 0, 0, 1, 2, 
    4, 4, 3, 3, 3, 0, 2, 2, NA, 1, 2, 1, 1, 1, 1, 1, 1, 1, 3, 
    1, 1, 2, 4, 2, 0, 1, 4, 3, 1, 3, 1, 0, 0, 0, 0, 0), F = structure(c(NA, 
    NA, 1L, 1L, 1L, 1L, 1L, 1L, NA, 1L, 1L, 1L, 1L, NA, 1L, 1L, 
    NA, NA, NA, NA, 1L, NA, 1L, NA, 1L, 1L, 1L, 1L, 1L, NA, 1L, 
    1L, 1L, NA, NA, NA, NA, 1L, NA, 1L, NA, 1L, 1L, 1L, NA, NA, 
    NA, NA, 1L, 1L, NA, 1L, NA, 1L, NA, 1L, NA, NA, NA, NA, NA, 
    NA, NA, NA, NA, 1L, NA, NA, NA, NA, 1L, 1L, NA, NA, NA, 1L, 
    1L, NA, NA, NA, NA, NA, NA, NA, NA, 1L, 1L, NA, NA, NA, NA
    ), .Label = "X", class = "factor"), DEP = c(NA, NA, 1.5, 
    NA, NA, NA, NA, 1.5, NA, 1.5, 2, 2, 2, 2, 1.5, 1, 1.5, 1.5, 
    1, 1, 1.5, 1, 2, 2, 1.5, 1, 1, 0, 1, 0.5, 1, 0.5, 1, 1, 1, 
    1, 0, 1.5, 1, 1, 1.5, 0.5, 1, 2, 1.5, 1.5, 1.5, 1.5, 1.5, 
    1.5, 1.5, 2, 2, 2, 2, 1.5, 1.5, 2, 2.5, 2, 1.5, 1, 1.5, 1, 
    NA, 2, 2.5, 2, 1.5, 1.5, 1, 1.5, 1.5, 1, 1.5, 2, 2, 1, 1.5, 
    2, 1, 1.5, 2, 2, 1.5, 2, 2, 1.5, 1, 2, 2), A = c(NA, NA, 
    NA, NA, NA, NA, NA, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 
    1, 1, 1, NA, 2, 1, 1, 1, 1, 1, 1, NA, 1, 1, 2, 1, 1, 1, 1, 
    1, 1, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1.5, 1, 1, 1, 1, 
    2, 2, 1, 2, 3, 1, 2, 1, 1, 1, 1, 1, 1, 1.5, 1, 1, 2, 1, 1, 
    1, 1, 1, 1, 1, 1, 1, 3, 2, 2, 2, 1, 1, 1, 1, 1), FAS = structure(c(NA, 
    NA, 1L, 1L, NA, NA, NA, 1L, NA, NA, NA, NA, NA, NA, NA, NA, 
    NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
    NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
    NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
    NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
    NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA
    ), .Label = "X", class = "factor")), .Names = c("Date", "R", 
"P", "F", "DEP", "A", "FAS"), class = "data.frame", row.names = c(NA, 
-91L))

推荐答案

这是您想要的吗?

library(tidyverse)

pp1 <- ggplot(dfSub, aes(x=Date)) + 
  geom_smooth(aes(y=P,col='P'),span=0.5,se=F) + 
  geom_smooth(aes(y=A,col='A'),span=0.5, se=F) + 
  geom_smooth(aes(y=DEP,col='DEP'),span=0.5, se=F) +
  geom_bar(aes(y=R,col='R'),stat="identity",alpha=0.5) +
  scale_color_manual("",
                 values=c('P'='red','A'='purple','DEP'='blue',R='grey')) +
  ylab("Scale 0 to 4")

dfSub <- dfSub %>% 
  mutate(F1 = ifelse(F == "X", 0.33, .))

pp1 + 
  geom_point(data=subset(dfSub, !is.na(F1)), aes(y=F1)) +
  geom_text(data = dfSub %>% 
          select(Date, F1) %>% 
          arrange(desc(Date)) %>% 
          slice(1), 
        aes(x = Date + 0.03, y = 0.33, label = "F"))

这篇关于ggplot2:如何标记事件发生的日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆