map 0807
# 前置作業
rm(list=ls())
setwd("D:/data")
步驟3:匯入地圖資料至R
使用 rgdal 套件的 readOGR函數 以匯入地圖資料,使用 tmap 套件以製作主題式地圖
library(rgdal)
library(tmap)
# 匯入地理資料 readOGR {rgdal}
twn <- readOGR(dsn="D:/data/tw", layer="TOWN_MOI_1080726", encoding="UTF-8")
head(twn@data) # 中文亂碼
# 中文亂碼轉換 iconv {base}
twn@data$COUNTYNAME <- iconv(twn@data$COUNTYNAME, from = "UTF-8", to="UTF-8")
twn@data$TOWNNAME <- iconv(twn@data$TOWNNAME, from = "UTF-8", to="UTF-8")
data$region <- iconv(data$region, from = "UTF-8", to="UTF-8")
head(twn@data) # 中文正常顯示
names(attributes(twn)) # 7個屬性
summary(twn) # 資料摘要
names(twn) # 7個欄位
class(twn) # SpatialPolygonsDataFrame
str(twn@data) # 368*7
# 篩選新北市地理資料
twn.ntp <- twn[which(twn@data$COUNTYNAME == "新北市"), ]
twn.ntp@data
str(twn.ntp@polygons[1])
str(twn.ntp@polygons[5])
-----------------------------------
步驟4:匯入資訊資料
poor <- read.table("poorgeo.csv", header=TRUE, sep=",", stringsAsFactors=FALSE) # 2054*5
步驟5:將位資訊整合至twn.ntp@data
# merge函數中,sort參數須設定為FALSE,否則繪圖位置會有錯誤
twn.ntp@data <- merge(twn.ntp@data, data, by.x = "TOWNNAME", by.y = TOWNNAME", sort=FALSE)
twn.ntp@data
twn.ntp@data<- merge(twn.ntp@data, data, by="TOWNNAME",sort=FALSE)
----------------------------------------------
接著產生equal interval
x1<-twn.ntp@data$rate
interval<-max(x1)-min(x1)
breaks=c(0,interval/3,interval*2/3,interval)+min(x1)
----------------------
面量圖色碼與分組
greys <- paste0("grey", c(seq(from = 100, to = 0, by = round(-100/3)))[1:3])
q1 <- cut(x1, breaks , include.lowest=T,right=F)
clr <- as.character(factor(q1, labels = greys))
---------------------------
設定小數位數,以供legend使用
breaks<-sprintf("%.4f",breaks)
plot(twn.ntp@data,col=clr)
LenTEXT1<-c(paste0("<",breaks[2],"%"),paste0(breaks[3],"%","-",breaks[4],"%"),paste0(">",breaks[3],"%"))
legend(legend = LenTEXT1, fill = greys, "bottomright",cex=0.6,title="中低收學生比率")
-------------------------------
主題式地圖(Thematic map) - 政府開放資料為例
# method 2 採用 qtm{tmap}
qtm(shp=twn.ntp, fill="rate", text="TOWNNAME", fill.title="rate", title="106學年度中低收入學生比率分佈圖")
參考網站
https://yijutseng.github.io/DataScienceRBook/vis.html
http://homepage.ntu.edu.tw/~wenthung/R_Spatial/Midterm_Exam.html
http://map-testing.blogspot.com/2016/09/r.html
主題式地圖(Thematic map) - 政府開放資料為例
https://rbloggers.github.io/2018/10/28/Alan_Lee-thematicmap.html
整理用 R 來操作平常在 ArcGIS 或是 QGIS 上操作的基本功能
https://kemushi54.github.io/R-basic/sp_and_rgdal.html
主題式地圖(Thematic map) - 政府開放資料為例
https://rbloggers.github.io/2018/10/28/Alan_Lee-thematicmap.html