2021年7月4日

端午連假,開車出門去到哪?D3 js弧形圖的視覺化呈現

 兩三週前,寫了這篇

《端午連假,台灣人有出遠門嗎?用高公局的交通資料庫找證據》


過了幾週後,其實民眾應該已經忘記端午連假前,有人出遠門這件事。不過,我沒忘,我一直在想找這個答案。


當時那篇我最後寫了

最後回到一開始的問題,到底有沒有出遠門呢?我目前只能說,我的資料無法支持「有出遠門」這樣的主張。主要是我處理的資料庫中沒有提供起訖點,當然也不知道南北向。所以目前我只能說我不支持這樣的主張,但是並不代表我反駁這樣的主張喔。


後來我在高速公路局的交通資料庫裡看到了M06A的 各旅次路徑原始資料,裡頭居然鉅細靡遺的紀錄了每天每一台車的起訖點和經過各門架的時間,有了這種資料要回答我之前提出的問題。還好沒有提供車號,不然真的可以拿來為非作歹啊。

這個資料庫裡有區分車種,如小客車、大客車、小貨車、大貨車、聯結車等,我抓取了每台車的起點和終點門架做統計之後,知道那些門架進出數量,但是卻不知道怎麼去呈現這些資料。

嘗試過各種方式,但總是沒能達到我要的效果


試過畫出每個門架的位置,想從裡頭視覺化,但是想不出來。


也試過熱區圖,用進出門架的縣市為縱橫軸,用實際車次為數值,看「從哪個縣市進入的,大多去哪個縣市」。但是用實際車次就會受到母體的影響,比方說雙北的人口多,車輛當然多,而且雙北的面積大,所以很容易就得出「從台北市進去的車子大多從台北市離開」的結論


後來我就想,那我先不要分縣市,直接看各門架的進出好了。(先說下面兩張圖後來想到有一些問題)

我抓取6/11,旅程小於300公里的聯結車的行車紀錄,共計202454輛次。再篩選各收費門架中,找出起點和終點門架各大於500輛次的門架,用其前後的出入口當作該車輛進入和離開高速公路的點。看看聯結車和小客車進入高速公路的熱點,和離開高速公路的熱點是哪裡?

這張圖怎麼看,每個色塊都代表一群車子,顏色深淺代表這群車子的數量,沿著色塊往左看可以看這群車子從哪裡來,往下看可以看這群車子從哪裡離開。

跟一開始我推測的差不多,基隆和高雄就是熱區。

我說的問題是什麼,實際上第一名的入口門架,所使用的出口門架,和第二名、第三名等的所使用的出口門架都是不同的,所以這樣的圖看起來很漂亮,但其實漏掉很多訊息。






卡關一陣子之後,分心去處理別的專案,用了D3.js,發現弧形圖 arc diagram很適合用在我這個交通分析的專案。

於是花了一些時間弄懂範例之後,終於打造了一個我滿意的視覺化呈現

噹噹

https://chihhsiangchien.github.io/trafficAnalyze/arc-diagram/d3/index.html

點選門架,就可以看到從那個門架進去的車,從哪個門架出去?線條的粗細代表車流的大小,越細車越少,越粗車越多。我是把車流取10為底的log值,每粗一倍的線條,就是10倍車流,最粗的線條就是幾十萬台車,最細的就是十幾台車。




最後我終於可以看出,當天北部的小車到底有沒有跑到南部呢?當然是有啊。那麼是多還是少呢?這個我就沒做了,因為多和少的評斷,你得和其他日子一起比啊。