所以我需要使用 hflights 包并制作每個作業日的子圖以顯示飛機的延誤(不包括取消的航班)。問題是我無法同時重現 x 軸和 y 軸(x:月和 y:以分鐘為單位的延遲)。我嘗試使用 facet_wrap 和 facet_grid,但我不熟悉這些功能,因為不經常使用 ggplot2。
uj5u.com熱心網友回復:
如果您命名月份和作業日,按正確的順序排列它們,并在 y 軸上使用對數刻度,則繪圖會更清晰。您可以使用facet_grid為每個作業日創建子圖。
library(hflights)
library(tidyverse)
weekday <- c('Sunday', 'Monday', 'Tuesday', 'Wednesday',
'Thursday', 'Friday', 'Saturday')
hflights %>%
mutate(WeekDay = factor(weekday[DayOfWeek], weekday),
Month = factor(month.abb[Month], month.abb)) %>%
filter(Cancelled == 0) %>%
ggplot(aes(Month, DepDelay))
geom_boxplot()
scale_y_log10()
facet_wrap(.~WeekDay)
labs(x = 'Month', y = 'Departure delay (log scale)')

要獲得通過每個面板的單行,您需要對月和日的每個獨特組合有一個平均值。最簡單的方法是通過geom_smooth
hflights %>%
mutate(WeekDay = factor(weekday[DayOfWeek], weekday),
Month = factor(month.abb[Month], month.abb)) %>%
filter(Cancelled == 0) %>%
ggplot(aes(Month, DepDelay, group = WeekDay))
geom_smooth(se = FALSE, color = 'black')
facet_wrap(.~WeekDay)
labs(x = 'Month', y = 'Departure delay (log scale)')

雖然您也可以自己匯總資料并使用geom_line
hflights %>%
filter(Cancelled == 0) %>%
mutate(WeekDay = factor(weekday[DayOfWeek], weekday),
Month = factor(month.abb[Month], month.abb)) %>%
group_by(Month, WeekDay) %>%
summarize(Delay = mean(DepDelay)) %>%
ggplot(aes(Month, Delay, group = WeekDay))
geom_line(color = 'black')
facet_wrap(.~WeekDay)
labs(x = 'Month', y = 'Departure delay (log scale)')

uj5u.com熱心網友回復:
現在,由于您沒有發布代碼,我們假設您已經保存了一個情節,該情節將所有內容都繪制在 a 下的一個情節中。
a facet_grid(rows = vars(weekday))
(“weekday”是作業日所在的列名,如果名稱不同,請替換它)
如果這不是您要搜索的內容,那么如果您可以發布一些代碼會很棒...
uj5u.com熱心網友回復:
假設您要顯示ArrDelay,
hflights %>%
filter(Cancelled!=1) %>%
ggplot(aes(x=as.factor(Month), y=mean(ArrDelay,na.rm=T)))
geom_col()
labs(x='Month',y='Mean arrival Delay')
facet_wrap(~DayOfWeek)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/468209.html
上一篇:繪制sf物件時如何避免ggplot2將軸轉換為度數?
下一篇:在帶有垂直線的水平條中繪圖
