首页 > 解决方案 > 用于分组数据和 R 中带有日期的两个变量的 facet ggplot

问题描述

我想在 R 中为我的模型组绘制一个侧面图,以便每个图表显示 12 个月的数据以及每个 Val1 和 Val2 的两条不同颜色的线。

Model No.   Date    Val1    Val2
a   01/10/2020  2.39    4.67
a   01/11/2020  5.15    6.05
a   01/12/2020  3.19    1.62
a   01/01/2021  8.76    11.65
a   01/02/2021  15.72   11.41
a   01/03/2021  10.92   11.91
a   01/04/2021  11.96   19.27
a   01/05/2021  11.52   15.58
a   01/06/2021  2.92    4.42
a   01/07/2021  4.89    6.01
a   01/08/2021  10.05   15.19
a   01/09/2021  3.46    4.85
b   01/10/2020  3.76    3.41
b   01/11/2020  0.88    1.25
b   01/12/2020  0.93    0.78
b   01/01/2021  1.87    1.88
b   01/02/2021  1.40    1.28
b   01/03/2021  1.58    1.29
b   01/04/2021  4.50    2.93
b   01/05/2021  5.31    5.45
b   01/06/2021  9.19    6.69
b   01/07/2021  4.09    3.11
b   01/08/2021  5.20    3.86
b   01/09/2021  4.39    3.76

我已经从 excel 中添加了所需的输出,有点像这些线。彼此相邻的折线图或条形图显示每组中的两个值(Val1 和 Val2)比较。

如果有人可以提供帮助,将不胜感激。提前致谢。

测试数据

标签: rggplot2facetfacet-wrap

解决方案


试试这个方法。重塑数据以长期保留模型,然后确定日期。然后使用facet_wrap(). 这里的代码:

library(ggplot2)
library(dplyr)
library(tidyr)
#Code
df %>% pivot_longer(-c(1,2)) %>%
  ggplot(aes(x=Date,y=value,color=name,group=name))+
  geom_line()+
  scale_x_date(breaks = '1 month')+
  facet_wrap(.~`Model No.`,scales = 'free',ncol = 1)+
  theme_bw()+
  theme(legend.position = 'bottom',
        axis.text.x = element_text(angle=90))+
  labs(color='Serie')

输出:

在此处输入图像描述


推荐阅读