R語言繪制空間熱力圖
先上圖
R語言的REmap包擁有非常強大的空間熱力圖以及空間遷移圖功能,里面內置了國內外諸多城市坐標數據,使用起來方便快捷。
開始
首先安裝相關包
install_packages("devtools") install_packages("REmap") library(devtools) library(REmap)
我們來試試其強大的城市坐標獲取功能
city<- c("beijing","上海") get_geo_position(a)
我們可以得到如下表結果,即上海和北京兩所城市的經緯度坐標,這樣寫可以看出,無論輸入漢語拼音“beijing”或是漢語“上海”,都是可以被識別的。
id1120lon116.413554121.480237lat39.91101331.236305citybeijing上海idlonlatcity1116.41355439.911013beijing120121.48023731.236305上海
拿到數據該怎么辦
那么,但你拿到一份“城市-指標”數據,如何畫出該指標的空間熱力圖呢?我這邊給大家示范一份自己的問卷數據QuesData,部分數據見下表:
city上海大同北京合肥泰安value9536191412cityvalue上海95大同36北京19合肥14泰安12
面對以上整理好的數據,我們做出如下處理:
df<-data.frame(get_geo_position(as.vector(QuesData$city))) df2<-data.frame(df[1:2],QuesData$value)
得到我們想要的數據如下:
lon116.413554121.480237lat39.91101331.236305value1995lonlatvalue116.41355439.91101319121.48023731.23630595
數據處理完后便可以直接繪圖了
options(remap.js.web = T) theme1 <- get_theme(theme = "dark",lineColor = "White",backgroundColor = "black",titleColor = "#fff",borderColor = "blue",regionColor = "white",labelShow = T,pointShow = F,pointColor = "gold") remapH(df2,maptype = 'china',theme=theme1,blurSize = 35,color = "blue",minAlpha = 20,opacity = 1)
- 其中,第一句options是為了將web設置為激活狀態,由於REmap是基於D3.js繪圖引擎的,需要使用網頁js產生動態效果。
- 第二個是為了生成一個主題,這個就像ggplot2的一個圖層一樣(個人理解),其中,theme為主題,有Dark,Bright,Sky,None四種,選前三種時后續設置失效,因為你都定主題了,怎么還想做其他調整呢?如果要設置線條顏色,背景色,邊界顏色這些,主題就要選擇為None,其余的顏色設置自己摸索吧,不會就參看get_theme命令。
- 第三行即畫圖命令,theme=theme1來指定主題,blursize和minalpha是調整顏色區塊大小和深淺的,大家自己調整之后看看效果就知道啦!
最終得到一開始那幅圖,需要數據的請發送郵件至 595403043@qq.com~
其他空間作圖
當然,如果你覺得這種方式不夠美觀,又想將空間數據以較美觀的方式呈現,你也可以嘗試空間分位圖,推薦軟件GeoDa和Stata,當然R也可以畫,但是會非常難看。這里上一張stata的直出圖:
stata命令非常簡單,畫這一張圖只用了一行命令,但是你需要.shp文件,即地理坐標數據文件,該數據在世界地理信息網站上可以免費下載到。
GeoDa是一款專門做界面空間計量的軟件,能夠以界面的方式繪制各種空間圖形,非常好用,但是也有其分析的局限