接上一篇,R地圖系列(1):maptools包繪制中國地圖,如果沒有讀過第一篇的讀者建議回去瀏覽一遍。
由上一篇文章得知宪赶,我們的數據已經保存在map中了宗弯。那么,如何將將包含經緯度的數據投影到地圖上去呢搂妻?
數據準備
畫圖之前需要準備的數據包括(隨便舉個例子):
城市名蒙保,經度,緯度欲主,人口數(自行車數等等),隨便編一些數據邓厕,大家可以看看數據格式。
name latitude longitude num
杭州 30.27415 120.15515 100
上海 31.23037 121.4737 70
成都 30.5702 104.06476 60
OK扁瓢,按照以上格式準備好后我們就可以繪圖了详恼。
我這邊用的的數據涉及隱私,不便公布引几,只是最后用來展現一下效果昧互。
將數據存在city 中,待會繪圖會用到她紫。
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="中國地圖",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))
可以得到:
氣泡圖形式的各個城市對應的數據就出來了硅堆,當然也可以在每個氣泡標出城市名稱。
文字圖形式
執(zhí)行以下代碼:
mymap1 = ggplot(data = fortify(map)) +
geom_polygon(aes(x = long, y = lat, group=group), colour = "lightblue",fill = "white") +
labs(title="中國地圖",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)
文字圖形式的各個城市對應的數據就出來了贿讹,數據中我用了雙重映射渐逃,其中文字的大小影射到個城市某個數據的大小,顏色的深淺也映射到數據的大小民褂。
備注:顏色部分建議先讀RColorBrewer與ggplot2
這樣茄菊,我們以后就可以將任意維度的各個城市的數據(比如降雨量、人口赊堪、pm2.5等等)通過不同的方式(比如氣泡圖面殖、問文字圖、柱狀圖等ggplot2可以實現的圖)投影到中國地圖上了哭廉。