對,你沒看錯,真的有這種操作~
之前的ggplot2入門實踐篇已經更新告一段落,也已經做了歸總分類分享給大家。
最近翻看突然發現少了一個知識點,就是分面中沒有講填充多邊形分面的應用,雖然其理念跟其他的常用圖表類型一致。
但是鑒於多邊形填充本身就比較複雜,再加上分面肯定能把大部分小夥伴兒繞暈,這裡還是親自實踐一篇案例詳細講解一下實際用法。
如果你還不懂如何使用ggplot2製作數據地圖的話,你可以參考以下序列文件:
地圖部分(ggplot2)
你想要的地圖素材資源,我都幫你整理好了~
一篇文章教你搞定JSON素材,從此告別SHP時代~
大道至簡——論如何最優雅的操縱json地圖數據
關於美國地圖中的兩個海外州坐標平移與原始投影問題~
R語言可視化——關於ggplot所支持的數據地圖素材類型
一篇小短文助你打開數據可視化的任督二脈!
數據地圖多圖層對象的顏色標度重疊問題解決方案
ggplot2中如何自定義數據地圖版面範圍~
關於數據地圖的幾個遺留問題解決方案
R語言數據地圖——美國地圖
R語言數據地圖——全球填色地圖
數據地圖系列7|R語言版(上)
數據地圖系列8|R語言版數據地圖(下)
R語言可視化——數據地圖應用(東三省)
R語言可視化——數據地圖離散百分比填充(環渤海)
R語言可視化——地圖填充與散點圖圖層疊加
R語言可視化——多圖層疊加(離散顏色填充與氣泡圖綜合運用)
R語言可視化——地圖與氣泡圖結合應用
用R語言復盤美國總統大選結果~
R語言可視化——ggplot繪製中心密度輻射圖
R語言可視化——中心放射狀路徑圖
你絕對想不到,數據地圖還能這麼玩~
玩轉數據地圖系列之——地圖上的迷你條形圖
一個小案例,教你如何從數據抓取、數據清洗到數據可視化
一篇全是代碼的數據可視化案例
小魔方不想跟你說話,並向你扔了一堆代碼~~~
地圖可視化之——移花接木
為了演示方便,今天這篇使用純模擬數據:
載入包:nlibrary("ggplot2")nlibrary("plyr")nlibrary("ggthemes")nlibrary("rgdal")nlibrary("dplyr")n
導入中國省界地圖:
setwd("D:/R/rstudy/CHN_adm") nchina_map<-readOGR("bou2_4p.shp",stringsAsFactors=FALSE)nmydata<-china_map@data["NAME"]nmydata$id<-0:924;mydata[mydata$id==898,"NAME"]<-"澳門特別行政區"n
mymapdata<-fortify(china_map)nmymapdata$id<-as.numeric(mymapdata$id)nmymapdata<-merge(mymapdata,mydata,all.x=TRUE)nmymapdata<- mymapdata %>%rename(region=NAME)n
今天的目標是,使用一個省份12年份實踐序列數據分別呈現填色散點氣泡圖、顏色填充圖、以及組合圖,形成3*4排列的數據地圖分面,不是使用grid逐個列印單個地圖,而是直接使用ggplot2的分面參數進行繪製。
考慮到如果使用傳統的數據源格式(geom_polygeon製作填充圖要求將指標數據與地理分界點數據合併,因為地理分界點數據有9萬個,12個年份數據表寬轉長之後會暴增到120萬+,肯定會拖慢內存,所以今天使用geom_map函數進行顏色填充地圖的繪製)。
以下是本案例步驟:
首先構造12個年份變數:nmydata_new<-data.frame(NAME=unique(mydata$NAME))nfor (i in 2:13){nmydata_new[,i]<-round(runif(34,0,250))n}n
定義並切割連續型數據為因子變數nnames(mydata_new)[2:length(mydata_new)]<-as.character(2001:2012)nmydata_new<-mydata_new%>%tidyr::gather(year,zhibiao,-1)nmydata_new$fact<-cut(mydata_new$zhibiao,breaks=c(0,50,100,150,200,250),labels=c(0~50,50~100,100~150,150~200,200~250),order=TRUE,include.lowest = TRUE)n
以下是構圖過程:
分面地圖一(熱力填色地圖): nggplot(mydata_new,aes(map_id=NAME,fill=fact))+ngeom_map(map=mymapdata,colour="grey65")+nscale_fill_brewer(palette="Blues") + ###Blues&Greensnfacet_wrap(~year)+nexpand_limits(x=mymapdata$long,y=mymapdata$lat)+ncoord_map("polyconic")+nguides(fill=guide_legend(reverse=TRUE,title=NULL))+ ntheme_void()%+replace% theme(legend.position = c(0,0.7),legend.text.align=1) n
導入併合並省份行政中心經緯度數據nprovince_city <- read.csv("D:/R/rstudy/Province/chinaprovincecity.csv") nprovince_city<-province_city%>%select(province,jd,wd)nmydata_new<-merge(mydata_new,province_city,by.x="NAME",by.y="province",all.x=TRUE)n
分面地圖二(填色氣泡地圖):nggplot(mydata_new,aes(map_id=NAME))+ngeom_map(map=mymapdata,colour="grey65",fill="#EEF3FA")+ngeom_point(aes(x=jd,y=wd,size=zhibiao,colour=zhibiao),shape=16)+nscale_size_area(max_size=6) + nscale_colour_gradient(low="white",high="#D73434")+ nfacet_wrap(~year)+nexpand_limits(x=mymapdata$long,y=mymapdata$lat)+ncoord_map("polyconic")+nguides(fill=guide_legend(reverse=TRUE,title=NULL),size=guide_legend(reverse=TRUE,title=NULL))+ ntheme_void()%+replace% theme(legend.position = c(0,0.7),legend.text.align=1) n
分面地圖三(填色氣泡+熱力填充地圖): nggplot(mydata_new,aes(map_id=NAME))+ngeom_map(map=mymapdata,aes(fill=fact),colour="white")+ngeom_point(aes(x=jd,y=wd,size=zhibiao,colour=zhibiao),shape=16)+nscale_size_area(max_size=4) + nscale_fill_brewer(palette="Greens") + ###Blues&Greensnscale_colour_gradient(low="white",high="#D73434")+ nfacet_wrap(~year)+nexpand_limits(x=mymapdata$long,y=mymapdata$lat)+ncoord_map("polyconic")+nguides(fill=guide_legend(reverse=TRUE,title=NULL),size=guide_legend(reverse=TRUE,title=NULL))+ ntheme_void()%+replace% theme(legend.position = c(0,0.7),legend.text.align=1) n
對你沒有看錯,ggplot2就是這麼高端大氣上檔次,想不想學這種操作呀,9月12日晚八點,天善學院我們不見不散(悄悄地告訴你報名地址在閱讀原文里)~_~
所需數據源請移步之本人GitHub下載,可以直接進入GitHub官網搜索ljtyduyu,也可以在後台回復任意內容,獲取小魔方的GitHub主頁數據獲取地址。
聯繫方式:
微信:ljty1991
博客主頁:raindu&#x27;s home
個人公眾號:數據小魔方(datamofang)
團隊公眾號:EasyCharts
qq交流群:[魔方學院]298236508
推薦閱讀:
※用R-Shiny打造一個美美的在線App
※Tidy data----從零開始學會大數據分析課程第4課-課後作業1-part2
※MySQL |OR運算符