R語言可視化——地圖填充與散點圖圖層疊加
今天跟大家分享關於如何在地圖圖層上添加散點圖。
散點圖需要精確的經緯度信息才能在疊加的圖層上進行映射,因此我們選用中國省級輪廓地圖以及各省省會城市的經緯度進行案例演示。
載入包:
library(ggplot2)nlibrary(plyr)nlibrary(maptools)nlibrary(sp)n
導入中國省界地圖:
china_map<-readShapePoly("c:/rstudy/bou2_4p.shp")ndata1<- china_map@data ndata2<- data.frame(id=row.names(data1),data1) n
數據格式轉化及業務數據合併:
china_map1 <- fortify(china_map) nchina_map_data <- join(china_map1,data2, type = "full") nmydata <- read.csv("c:/rstudy/geshengzhibiao.csv")nchina_data <- join(china_map_data, mydata, type="full")n
各省省會城市經緯度數據:
province_city <- read.csv("c:/rstudy/chinaprovincecity.csv") n
省級輪廓地圖上添加散點圖圖層:
ggplot(china_data,aes(long,lat))+n geom_polygon(aes(group=group),fill="white",colour="grey60")+n geom_point(data=province_city,aes(x=jd,y=wd),colour="red")+n coord_map("polyconic") + n theme(n panel.grid = element_blank(),n panel.background = element_blank(),n axis.text = element_blank(),n axis.ticks = element_blank(),n axis.title = element_blank()n )n
接下來,我們可以給各省的省會城市賦值,將散點圖的大小映射給連續性數值變數,使其變成氣泡圖。
province_city$zhibiao<-NULLnprovince_city$zhibiao<-rnorm(34,100,50)nwindowsFonts(myFont = windowsFont("微軟雅黑"))n
ggplot()+ geom_polygon(data=china_data,aes(x=long,y=lat,group=group),fill="grey95",colour="grey80")+n geom_point(data=province_city,aes(x=jd,y=wd,size=zhibiao),shape=21,fill="#8E0F2E",colour="black",alpha=0.4)+n scale_size_area(max_size=8)+n coord_map("polyconic") + n guides(size=guide_legend(reverse=TRUE,title=NULL))+ n ggtitle("某公司2015~2016年度營業狀況分布圖")+n theme(n title=element_text(family="myFont"),n panel.grid = element_blank(),n panel.background = element_blank(),n axis.text = element_blank(),n axis.ticks = element_blank(),n axis.title = element_blank(),n legend.position =c(0.15,0.4),n legend.background=element_rect(colour="white",fill="white"),n legend.text.align=1n )n
最後我們來處理標籤問題:
因為這裡使用了散點圖(氣泡圖)作為數據展示方式,而作為底圖的地圖圖層僅僅是作為定位信息,沒有包含任何的數據信息,而且頁面整體上沒有太多地方放置省名稱標籤,所以我們有選擇性的顯示前五個數據所代表的省份標籤,以防標籤太多導致頁面雜亂。
labelper<-province_city[order(province_city[,5],decreasing=T),][1:10,]nggplot()+n geom_polygon(data=china_data,aes(x=long,y=lat,group=group),fill="grey95",colour="grey80")+ geom_point(data=province_city,aes(x=jd,y=wd,size=zhibiao),shape=21,fill="#8E0F2E",colour="black",alpha=0.4)+n scale_size_area(max_size=8)+n coord_map("polyconic") + n geom_text(aes(x=jd+2.3,y=wd,label=city),size =3,family="myFont",fontface="plain",data=labelper) +n guides(size=guide_legend(reverse=TRUE,title=NULL))+ n ggtitle("某公司2015~2016年度營業狀況分布圖")+n theme(n title=element_text(family="myFont"),n panel.grid = element_blank(),n panel.background = element_blank(),n axis.text = element_blank(),n axis.ticks = element_blank(),n axis.title = element_blank(),n legend.position =c(0.15,0.4),n legend.background=element_rect(colour="white",fill="white"),n legend.text.align=1n )n
如果甲你想要添加全部的標籤,直接使用province_city中的city標籤即可:
ggplot()+n geom_polygon(data=china_data,aes(x=long,y=lat,group=group),fill="grey95",colour="grey80")+n geom_point(data=province_city,aes(x=jd,y=wd,size=zhibiao),shape=21,fill="#8E0F2E",colour="black",alpha=0.4)+n scale_size_area(max_size=8)+n coord_map("polyconic") + n geom_text(aes(x=jd+2.3,y=wd,label=city),size =3,family="myFont",fontface="plain",data=province_city) +n guides(size=guide_legend(reverse=TRUE,title=NULL))+ n ggtitle("某公司2015~2016年度營業狀況分布圖")+n theme(n title=element_text(family="myFont"),n panel.grid = element_blank(),n panel.background = element_blank(),n axis.text = element_blank(),n axis.ticks = element_blank(),n axis.title = element_blank(),n legend.position =c(0.15,0.4),n legend.background=element_rect(colour="white",fill="white"),n legend.text.align=1n )n
聯繫方式:
wechat:ljty1991
Mail:578708965@qq.com
個人公眾號:數據小魔方(datamofang) 團隊公眾號:EasyCharts qq交流群:[魔方學院]553270834推薦閱讀:
※你不曾見過的酷炫地圖可視化作品(二)
※修改Power Bi本身顏色,打造自己的設計品牌
※07.微軟又一逆天可視化神器——Power BI
※有了這些創意美學,城市數據的趣味性超乎你的想像
※MATLAB數據可視化[1]:geobubble