library(knitr) library(svglite) ## Global options options(max.print="75") knitr::opts_chunk$set( echo = FALSE, message = FALSE, warning = FALSE, comment = NA, dev = 'svg', dpi = 300, out.width = '100%', fig.dim=c(8,4) )
ori_dir <- getwd() setwd('../../data-raw') source('clean_explore.R') setwd(ori_dir) library(gridExtra)
tmp <- data %>% filter(date == ymd('2016-05-25')) %>% filter(num_in > 0 & num_out > 0) %>% filter(num_in + num_out >= 10) %>% arrange(desc(num_in + num_out)) top_4_big_stations <- c('台北', '桃園', '台南', '台中', '新竹', '高雄') top_4_small_stations <- tmp$station[140:145]
若城鄉差距存在,亦即,鄉村人口有移往都市的傾向,我們會期待在特殊節日(例如,春節)會出現返鄉人潮。而臺鐵提供的每日進出站人數,讓我們能夠呈現這種返鄉的現象 — 例如,我們可以比較某車站平日與除夕的「(出站 - 進站) 人數」,若該站在春節期間 (相對於平日) (出站 - 進站) 人數多出許多 (亦即在春節期間人口大量移入),我們會預期該地屬於人口外流的地區 (鄉村),反之就會是都市地區。
預期車站進出人數能看出城鄉差距,是假設特殊節日(春節)進出站人數反映返鄉乘客,但其也有可能是反映觀光人潮的移動。
我們使用臺鐵每日各站點進出站人數,從中取了 2010, 2012, 2014 這 3 年一至三月,12 個車站每日的進出站人數的資料繪製成下面幾張圖。以下是這些圖的元素說明:
橫軸:日期 (以天為單位)
縱軸:$\frac{出站人數~-~進站人數}{出站人數~+~進站人數}$
這個指標主要是為了 normalize 大小站的進出人數區別。指標的數值越大 (正),代表當日較多人進站,也就是該站當天為人口移入的地區;反之,若指標越小 (負),代表該站當天為人口移出的地區。
因為這個指標的特性,通常小站 (進出站總人數較低) 的振幅會很明顯。這個指標個重點主要是看值的正負或是曲線變化的趨勢 (上升、下降、尖角)。
兩條縱向虛線:每張圖中有兩條縱向虛線,
比較粗、位於右側的虛線:大年初一
比較細、位於左側的虛線:除夕
車站:每張圖會有 4 個車站,有兩個 (直觀上) 位於都市地區、另外兩個位於鄉村地區 (進出站總人數排名 100 多名的幾個車站)
以下面第一張圖 (2010) 為例,台北在除夕那天有很明顯的人口移出 (一個向下的尖角),但隔日 (初一) 這個現象大幅區緩。桃園的曲線也類似台北 (雖沒這麼明顯),在除夕當日都是人口移出最明顯的一天。而其它兩個鄉村地區的車站則呈現相反的趨勢。
換言之,在這裡似乎可以看出都市和鄉村地區的差異:都市地區在除夕那日,會出現一個指向下方的三角形;鄉村地區則會出現指向上方的三角形。
plot_lst = list() years <- c(2010, 2012, 2014) for (i in 1:3) { stations <- c(top_4_big_stations[1:2], top_4_small_stations[1:2]) for (year in years) { filtered_data <- filter_sta_y(data, stations, year, months=1:3) #plot_lst[[i]] <- plot_daily(filtered_data, print = FALSE) plot_daily(filtered_data, print = TRUE) } top_4_big_stations <- top_4_big_stations[-(1:2)] top_4_small_stations <- top_4_small_stations[-(1:2)] }
#for (i in 1:3) print(plot_lst[[i]]) #do.call(grid.arrange, args = plot_lst)
years <- c(2010) top_4_big_stations <- c('台北', '桃園', '台南', '台中', '新竹', '高雄') top_4_small_stations <- tmp$station[140:145] stations <- c(top_4_big_stations, top_4_small_stations) DT::datatable(filter_sta_y(data, stations, years, months=1:3))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.