0

我想使用 的face_wrap功能ggplot来绘制以下示例数据。plot好像不太对。应该有平滑的line连接,两者都没有额外的空间facets(即Facet A有 10-15 的空白空间,而Facet B有 0-5 的空间)。x 轴上的月份也有点奇怪。

library(tidyverse)
library(lubridate)


set.seed(555)

D <- data.frame(Date = seq(as.Date("2001-01-01"), to= as.Date("2003-12-31"), by="day"),
                      A = runif(1095, 0,10), Z = runif(1095, 5,15))
D %>% pivot_longer(-Date, names_to = "Variable", values_to = "Value") %>% 
  mutate(Year = year(Date), Month = month(Date)) %>% 
  ggplot(aes(x = Month, y = Value, col = as.factor(Year)))+
  geom_line()+facet_wrap(~Variable, nrow = 2)

在此处输入图像描述

期望的输出:我正在寻找如下图,其中线条具有平滑的月度连接。 在此处输入图像描述

4

2 回答 2

1

如果您想使用一年中的某一天作为您的 x 位置并且仍然获得有效的日期轴,您可以取消您的日期:

library(tidyverse)
library(lubridate)
#> 
#> Attaching package: 'lubridate'
#> The following object is masked from 'package:base':
#> 
#>     date


set.seed(555)

D <- data.frame(Date = seq(as.Date("2001-01-01"), to= as.Date("2003-12-31"), by="day"),
                A = runif(1095, 0,10), Z = runif(1095, 5,15))
D %>% pivot_longer(-Date, names_to = "Variable", values_to = "Value") %>% 
  mutate(Year = year(Date), Month = month(Date),
         Date = {year(Date) <- 2000; Date}) %>%
  ggplot(aes(x = Date, y = Value, col = as.factor(Year)))+
  geom_line()+facet_wrap(~Variable, nrow = 2) +
  scale_x_date(date_breaks = "1 month", 
               date_labels = "%b")

reprex 包(v0.3.0)于 2020-07-18 创建

于 2020-07-17T22:44:52.737 回答
0

你可以试试这个:

D %>% pivot_longer(-Date, names_to = "Variable", values_to = "Value") %>% 
  mutate(Year = year(Date), Month = month(Date)) %>% 
  ggplot(aes(x = factor(Month), y = Value, col = as.factor(Year),group=factor(Year)))+
  geom_line()+facet_wrap(~Variable, nrow = 2,scales='free')

在此处输入图像描述

于 2020-07-17T18:02:37.577 回答