繁体   English   中英

R ggplot 实际值和多个模拟点在同一 plot 与图例

[英]R ggplot actuals and multiple simulated points in same plot with legend

如何为模拟预测及其实际点的平均值绘制 ggplot?

对于第 1 个月到第 9 个月,分配了一个实际(df)点,第 10 个月和第 11 个月,需要用图例绘制模拟的 5 个点和平均点

#actual
month<-1:9
df<-c(0.20, 0.342, 0.710, 0.228, 0.124, 0.203, 0.956, 0.593, 0.195)
actual<-data.frame(month, df)


#simPred for month 10:11
sim1<-c(0.182, 0.235)
sim2<-c(0.165, 0.233)
sim3<-c(0.174, 0.258)
sim4<-c(0.139, 0.393)
sim5<-c(0.201, 0.412)
simPred<-data.frame(sim1, sim2,sim3,sim4,sim5)%>% 
  add_column(month=seq(from=length(month)+1, to=length(month)+nrow(simPred), by=1), Means=rowMeans(simPred[, 1:5]))                                                     

#combined
melted<-merge(actual, simPred, all=TRUE, by="month")
> melted
   month    df  sim1  sim2  sim3  sim4  sim5  Means
1      1 0.200    NA    NA    NA    NA    NA     NA
2      2 0.342    NA    NA    NA    NA    NA     NA
3      3 0.710    NA    NA    NA    NA    NA     NA
4      4 0.228    NA    NA    NA    NA    NA     NA
5      5 0.124    NA    NA    NA    NA    NA     NA
6      6 0.203    NA    NA    NA    NA    NA     NA
7      7 0.956    NA    NA    NA    NA    NA     NA
8      8 0.593    NA    NA    NA    NA    NA     NA
9      9 0.195    NA    NA    NA    NA    NA     NA
10    10    NA 0.182 0.165 0.174 0.139 0.201 0.1722
11    11    NA 0.235 0.233 0.258 0.393 0.412 0.3062                                                

这个样子怎么样? 我们可以将 pivot 你的数据转换成长格式然后合并。

library(tidyverse)
month<-1:9
df<-c(0.20, 0.342, 0.710, 0.228, 0.124, 0.203, 0.956, 0.593, 0.195)
actual<-data.frame(month, df)

#simPred for month 10:11
sim1<-c(0.182, 0.235)
sim2<-c(0.165, 0.233)
sim3<-c(0.174, 0.258)
sim4<-c(0.139, 0.393)
sim5<-c(0.201, 0.412)
simPred<-data.frame(sim1, sim2,sim3,sim4,sim5) %>% 
  mutate(month=c(10, 11)) %>%
  pivot_longer(names_to = "sim", cols=starts_with("sim"), values_to="df") %>%
  select(-sim) %>%
  rbind(actual)

ggplot(simPred, aes(x=month, y=df)) +
  geom_point() +
  stat_summary(fun.data = "mean_cl_boot", color="red")

阴谋

simPred<-data.frame(sim1, sim2,sim3,sim4,sim5)
reshaped<-melt(simPred, id.vars='month')

ggplot(data=actual ,aes(x=month, y=df))+geom_line(color='magenta')+
  geom_point()+
  geom_point(data=reshaped,aes(x=month, y=value, col=variable),size=1)+
  geom_line(data=subset(reshaped,variable=='Means', select = c(month,variable,value)),
            aes(x=month, y=value))

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM