[英]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() 求平均值 事先謝謝。
這可以像這樣實現:
month
和year
聚合列sal
,添加name
和date
。 在這里,我將日期設置為每月的第一天。 但你可以改變它。sal
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.