簡體   English   中英

如何在同一畫布中繪制每月和每日數據

[英]How to plot monthly and daily data in same canvas

我在這里有一個包含 5,000 多條記錄的數據集https://login.filesanywhere.com/fs/v.aspx?v=8c6b678858616ea970a0

我的最后一列 (sal) 是每月數據,而我的其他列是每日數據。 我嘗試了很多方法在同一個 r 設備中將它繪制在一起,但我的“sal”列打印了一些奇怪的線條。 我的其他圖形繪制正確。 有人可以給我一個提示,告訴我如何將“sal”總結為每月只有一個值,以使用 facet_wrap 在我的底部圖形上繪制它? 這是我嘗試過的一些代碼:

 library(tidyverse)
 library(readxl)
 library(lubridate)
tab <- read_excel("myjoinedfile.xlsx", sheet="Sheet1")
test <- tab %>% pivot_longer(-c("year","day","date","month")) %>% data.frame()
ggplot(test, aes(x = date, y = value,colour=year)) + 
  geom_line(size=0.75) +  t
  facet_wrap(name~.,switch = "y",ncol=1) +  
  scale_x_date(breaks = seq(as.Date("1991-10-01"),as.Date("1992-09-30"),
    by = "1 month"),date_labels = "%b") 

我所有的圖形都打印正確,但底部的圖形顯示不正確,因為“sal”列上的重復值太多。 我沒有成功嘗試使用 pivot_longer() 求平均值 事先謝謝。

這可以像這樣實現:

  1. monthyear聚合列sal ,添加namedate 在這里,我將日期設置為每月的第一天。 但你可以改變它。
  2. 將您的數據轉換為 long 除了列sal
  3. 將兩個 df 綁定在一起。
library(tidyverse)
library(readxl)
library(lubridate)
tab <- read_excel("myjoinedfile.xlsx", sheet="Sheet1")

test1 <- select(tab, year, month, sal) %>%
  group_by(year, month) %>% 
  summarise(value = mean(sal), .groups = "drop") %>% 
  mutate(name = "sal", 
         date = ifelse(month < 10, 1992, 1991),
         date = paste(date, month, "01", sep = "-"),
         date = as.Date(date))
  
test2 <- tab %>% 
  select(-sal) %>% 
  pivot_longer(-c("year","day","date","month")) %>% 
  mutate(date = as.Date(date))

test <- bind_rows(test1, test2)

ggplot(test, aes(x = date, y = value,colour=year)) + 
  geom_line(size=0.75) +
facet_wrap(name~.,switch = "y",ncol=1) +  
  scale_x_date(breaks = seq(as.Date("1991-10-01"),as.Date("1992-09-30"),
                            by = "1 month"),date_labels = "%b") 

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM