Using R to make a map with election attributes

互動式地圖製作步驟(R語法檔請見連結): 

step 1. Search for the .shp file.

.shp file: 有行政疆界形狀的檔案,shape file (關於GIS圖資檔案,請見說明)

Taiwan county map 我國各直轄市以及縣(市)行政區域界線

目前有些R package有包括全球地圖、各國的地圖,大家也可以找找看。

像是我們可以用leaflet()%>%addTiles() 的指令叫出世界地圖。

step 2. What do you want to see on this map? Find the dataset for your attributes(地圖所呈現的差異).

I want to see if DPP won more votes in Southern counties than the KMT. (我想看國民黨2018年縣市長選舉在各縣市得票率、當選者名字、當選者政黨別)

大家可以找不同的資料來玩玩看!看看不同縣市的各種attributes的差異,例如:

1. 中選會資料庫網站 Central Election Commission (e.g. 得票率)

2. 主計處 縣市重要統計指標 (e.g. 人口密度、社會福利支出)

3. 全台24小時營業超商的分布地點

4. 全台電動機車充電站的分布地點


step 3. Check if the datasets have a common variable to merge.

我想要把得票數的資料和縣市的shp file合併起來。

在合併之前,我得先確認一下是否有共同的變數名稱。

對gis並不熟悉的同學,常常會覺得shp file不容易閱讀。

用R,我們可以用str(shpfile)的指令來看到底這個shp file有甚麼變數、代表行政地區的變數又是怎麼寫。

例如,我需要確認以下這兩點

a. 縣市名稱的寫法是否相同 ex: 台北or 台北市

b. 變數名稱是否相同 ex: countyname or 縣市名稱


step 4. merge datasets 合併


補充說明:

R有幾個可以用來做地圖的packages: 

1) tmap

這篇教學文詳細說明了tmap在分組(style)的時候的差異

例如,我們想要產生一張地圖,並顯示出各國家戶所得的差異(又稱貧富差距,這是一種attribute特徵/屬性)。

我們要設定style指令來分類組別數。常見的style有kmeans等,讓R幫我們去按照貧富差距大小去著色。

或是我們也可以固定分組的數值,譬如我們按照世界銀行對於貧困人口的定義去劃分,那就有一個固定的數值,又稱cutpoints。

需要注意的是,Attributes的總數最好控制在5到6組。當Attributes分組的組數太多,會讓觀眾/讀者難以理解這張地圖想表達甚麼。

2) sf: 比較陽春,詳細操作可見這篇教學

3) leaflet: 可以出現pop-up information


畫heat map,容易遇到的問題

1. 你的Attributes並沒有所有省份的數值: 例如我用東亞民主調查的數據來展現不同省份民眾對政府的看法。但是東亞民主調查是抽樣調查,而非普查,所以很自然的,我並沒有全部省分的數值。最簡單的方式是把這些沒有抽到的省份變成NA。

2. 你的.shp file和Attributes的省份名稱不一致: 由於要把兩種檔案合併在一起,要記得把共同的變數名稱中的value弄成一致。


如果懶得自己做選舉地圖,其實政治大學的黃紀教授有一個地緣資料庫,裡面就有整合各種選舉的資料和地圖。

Comments

Popular Posts