2017-06-05 165 views
-1

當我試圖在我的代碼的最後一行添加一個變量(航班數量)時,問題就出現了。 我可以添加多個geom,x軸和y軸的單位不一定相同嗎?謝謝R如何繪製多個幾何圖形的圖形

library(nycflights13) 
library(tidyverse) 
flights %>% 
mutate(
    cancelled_flights = is.na(dep_delay), 
    sched_dep_time.HMM = sched_dep_time %/%100 + (sched_dep_time%%100)/60, 
    sched_dep_time.byH = sched_dep_time.HMM %/%1) %>% 
group_by(sched_dep_time.byH) %>% 
summarise(
    delay_prob = sum(is.na(dep_delay))/n(), 
    count = n()) %>% 
filter(sched_dep_time.byH >=2) %>% 
ggplot() + 
geom_path(mapping = aes(x = sched_dep_time.byH, y = delay_prob)) + 
geom_col(mapping = aes(x = sched_dep_time.byH, y = count)) 

回答

1

爲什麼你的陰謀沒有顯示的唯一原因是由於不同的y軸值delay_prob(0.005〜0.04)和count(1061至27242)。

這裏是玩弄第二y軸顯示兩條曲線的方式:

ggplot(df, aes(x = sched_dep_time.byH)) + 
    geom_line(aes(y = delay_prob), colour="red") + 
    geom_bar(aes(y=count/1000000), stat="identity") + 
    scale_y_continuous(sec.axis = sec_axis(~.*1000000, name = "count")) 

enter image description here

替代做法與facet_wrap上繪製不同的情節:

df <- df %>% gather(type, val, delay_prob, count) 

ggplot(df, aes(sched_dep_time.byH, val)) + 
    geom_bar(data=df %>% filter(type=="count"), stat="identity") + 
    geom_line(data=df %>% filter(type=="delay_prob")) + 
    facet_wrap(~type, scales="free", ncol=1) 

enter image description here

輸入數據:

df <- flights %>% 
    mutate(
    cancelled_flights = is.na(dep_delay), 
    sched_dep_time.HMM = sched_dep_time %/%100 + sched_dep_time%%100)/60, 
    sched_dep_time.byH = sched_dep_time.HMM %/%1) %>% 
    group_by(sched_dep_time.byH) %>% 
    summarise(
    delay_prob = sum(is.na(dep_delay))/n(), 
    count = n()) %>% 
    filter(sched_dep_time.byH >=2) 
+0

非常感謝Adam。這不僅僅是有益的。 – Sean