R語言可視化——多邊形與數據地圖填充
ggplot函數中有一類特殊的圖表類型叫做多邊形,很難用傳統的視角來定義它屬於哪一類圖表,因為它能夠呈現信息多種多樣。
特別是在做某些比較高階的圖表——地圖時,這種多邊形函數便能夠大顯神通。
之前本公眾號所推送的所有涉及地圖圖表繪製所使用的技巧,幾乎全部都依賴多邊形函數的支持。
library(ggplot2)library(plyr)library("maptools")
這裡以之前推送過的全球地圖為例:
導入地圖地理信息數據:
world_map <-readShapePoly("c:/rstudy/wold_map/World_region.shp")
使用路徑圖進行區域輪廓描邊:
ggplot(world_map,aes(x=long,y=lat,group=group)) +geom_path()
更改路徑線為白色,清除掉背景和網格線以及坐標軸:
ggplot(world_map,aes(x=long,y=lat,group=group)) +geom_path(colour="steelblue")+ theme( panel.grid = element_blank(), panel.background = element_blank(), axis.text = element_blank(), axis.ticks = element_blank(), axis.title = element_blank())
使用多邊形進行描邊並填充:(在多邊形中是可以進行線條與形狀分別填色的)
ggplot(world_map,aes(x=long,y=lat,group=group)) +geom_polygon(fill="white",colour="grey") + theme( panel.grid = element_blank(), panel.background = element_blank(), axis.text = element_blank(), axis.ticks = element_blank(), axis.title = element_blank())
這就是我們之前所製作的填色地圖的主體代碼語句,數據集是從shp文件導入,可以看出,其實只需要三列欄位信息,就可以畫出一幅地圖來:經緯度(二維坐標信息,也可以看作是一組代表X、Y軸的散點),另外的一列變數group其實是一個分類變數,將同一個單位區域輪廓(一個國家或者地區、島嶼等)用一組相同的編號表示。
如果再加上一列連續數值變數,可以將其指定為fill漸變填充的參考指標,那麼最終完成的圖表就是一幅按照不同地區指標大小對應漸變填色地圖。
其實這種不帶任何實質數據信息的地圖,很多R包中都有提供:(這裡以maps包為例)
library(maps)states<-map_data("state")ggplot(states,aes(long,lat,group=group))+geom_polygon(fill="white",colour="steelblue")+ theme(panel.grid = element_blank(), panel.background = element_blank(), axis.text = element_blank(), axis.ticks = element_blank(), axis.title = element_blank())
map包是一個專門用來做地圖的載入包,裡面存有幾個可以用的地圖數據包:
states<-map_data("world") #全球地圖ggplot(world,aes(long,lat,group=group))+geom_polygon(fill="white",colour="steelblue")+ theme(panel.grid = element_blank(), panel.background = element_blank(), axis.text = element_blank(), axis.ticks = element_blank(), axis.title = element_blank())
france<-map_data("france") #法國地圖ggplot(france,aes(long,lat,group=group))+geom_polygon(fill="white",colour="steelblue")+ theme(panel.grid = element_blank(), panel.background = element_blank(), axis.text = element_blank(), axis.ticks = element_blank(), axis.title = element_blank())
county<-map_data("county") #美國郡級ggplot(county,aes(long,lat,group=group))+geom_polygon(fill="white",colour="steelblue")+ theme(panel.grid = element_blank(), panel.background = element_blank(), axis.text = element_blank(), axis.ticks = element_blank(), axis.title = element_blank())
地圖投影方式:
france<-map_data("france") #法國地圖ggplot(france,aes(long,lat,group=group))+geom_polygon(fill="white",colour="steelblue")+coord_map("polyconic")+theme( axis.text = element_blank(), axis.ticks = element_blank(), axis.title = element_blank())
county<-map_data("county") #美國郡級ggplot(county,aes(long,lat,group=group))+geom_polygon(fill="white",colour="steelblue")+coord_map("polyconic")+theme( axis.text = element_blank(), axis.ticks = element_blank(), axis.title = element_blank())
地圖圖表作為ggplot函數中一大類比較高階的圖表,可以做出很多讓人眼花繚亂、令人尖叫的作品來,感興趣的小夥伴兒趕快學起來。
聯繫方式:
wechat:ljty1991
Mail:578708965@qq.com 個人公眾號:數據小魔方(datamofang) 團隊公眾號:EasyCharts qq交流群:[魔方學院]553270834推薦閱讀:
※第二章 創建數據集
※記錄數據可視化的每一個瞬間
※快訊| 2017年6月份精選R包
※數據地圖多圖層對象的顏色標度重疊問題解決方案
※數據分析領域裡,R和Python到底哪個市場需求大?