R地圖系列(2):maptools+ggplot2包添加地圖元素

接上一篇,R地圖系列(1):maptools包繪制中國(guó)地圖,如果沒(méi)有讀過(guò)第一篇的讀者建議回去瀏覽一遍。
由上一篇文章得知,我們的數(shù)據(jù)已經(jīng)保存在map中了。那么,如何將將包含經(jīng)緯度的數(shù)據(jù)投影到地圖上去呢?

數(shù)據(jù)準(zhǔn)備

畫圖之前需要準(zhǔn)備的數(shù)據(jù)包括(隨便舉個(gè)例子):
城市名,經(jīng)度,緯度,人口數(shù)(自行車數(shù)等等),隨便編一些數(shù)據(jù),大家可以看看數(shù)據(jù)格式。

name latitude longitude num
杭州 30.27415 120.15515 100
上海 31.23037 121.4737 70
成都 30.5702 104.06476 60

OK,按照以上格式準(zhǔn)備好后我們就可以繪圖了。
我這邊用的的數(shù)據(jù)涉及隱私,不便公布,只是最后用來(lái)展現(xiàn)一下效果。
將數(shù)據(jù)存在city 中,待會(huì)繪圖會(huì)用到。

city=read_excel("citydata.xlsx",col_names = TRUE)

氣泡圖形式

執(zhí)行以下代碼:

mymap = ggplot(data = fortify(map)) +
geom_polygon(aes(x = long, y = lat, group=group), colour = "gray",fill = "white") +
labs(title="中國(guó)地圖",x="",y="") +
geom_point(data=city,aes(x=longitude,y=latitude,size=num),colour="red",pch=1) +
geom_text(aes(x=longitude,y=latitude,label=name), data=city,color="black",size=1.5) +
theme(text=element_text(family="STKaiti",size=14))

可以得到:

Paste_Image.png

氣泡圖形式的各個(gè)城市對(duì)應(yīng)的數(shù)據(jù)就出來(lái)了,當(dāng)然也可以在每個(gè)氣泡標(biāo)出城市名稱。

文字圖形式

執(zhí)行以下代碼:

mymap1 = ggplot(data = fortify(map)) +
geom_polygon(aes(x = long, y = lat, group=group), colour = "lightblue",fill = "white") +
labs(title="中國(guó)地圖",x="",y="") +
geom_text(aes(x=longitude,y=latitude,label=name,size=num,colour=factor(res_num)), data=city) +
scale_color_manual("name",values = mycolors)

文字圖形式的各個(gè)城市對(duì)應(yīng)的數(shù)據(jù)就出來(lái)了,數(shù)據(jù)中我用了雙重映射,其中文字的大小影射到個(gè)城市某個(gè)數(shù)據(jù)的大小,顏色的深淺也映射到數(shù)據(jù)的大小。
備注:顏色部分建議先讀RColorBrewer與ggplot2

Paste_Image.png

這樣,我們以后就可以將任意維度的各個(gè)城市的數(shù)據(jù)(比如降雨量、人口、pm2.5等等)通過(guò)不同的方式(比如氣泡圖、問(wèn)文字圖、柱狀圖等ggplot2可以實(shí)現(xiàn)的圖)投影到中國(guó)地圖上了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容