千家信息网

如何分析ggplot2分面气泡图饼图

发表于:2024-10-21 作者:千家信息网编辑
千家信息网最后更新 2024年10月21日,如何分析ggplot2分面气泡图饼图,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。ggplot2系统内的分面函数只有简单的一个fac
千家信息网最后更新 2024年10月21日如何分析ggplot2分面气泡图饼图

如何分析ggplot2分面气泡图饼图,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

ggplot2系统内的分面函数只有简单的一个facet_grid(),但是恰恰就是这么一个不很起眼,甚至看起来有些特立独行的分面函数,却给高维数据可视化带来了革命性的变化,有了它,所有基于ggplot2的可视化图形都能够扩展呈现 维度,从第三维、第四维、第五维(理论上来说)。

还是再强调一下facet_grid()在ggplot2各个几何图层中的地位和控制范围,分面函数作为一个特殊的,具有美学映射属性,却被设计在了与几何图层近乎独立地位(表现在从写法上来看,它并没有被设计在几何图层内,而是与其他几何图层在位置上平行),由此可见包作者对其的推崇和重视。

它的控制权限是很高的,倘若你在facet_grid()函数内部指定了一个分面参数,那么剩余的所有几何图层都可以自动适用这个分面(当然前提是各几何图层的美学映射中都好含有与分面参数相同的变量)。

所以想要分面参数同事控制多个图层,必须保证每一个图层内都含有该分面参数同名的变量。

今天以气泡饼图为例:

library(ggplot2)
library(dplyr)
library(rgdal)
library(shiny)
library(shinythemes)
library(scatterpie)

导入并整理地图数据:

china_map <-readOGR("D:/R/mapdata/State/china.geojson","OGRGeoJSON",stringsAsFactors=FALSE)Encoding(china_map@data$name)<-"UTF-8"china_map <- fortify(china_map) province_city <- read.csv("D:/R/rstudy/Province/chinaprovincecity.csv",stringsAsFactors = FALSE,check.names=FALSE)

构造气泡饼图数据:

city_data<-data.frame(Name=rep(c("北京","上海","重庆","武汉","广州","西安")))
for (i in 2:7) city_data[,i]<-round(runif(6,0,250))names(city_data)[2:7]<-paste0("Year",2011:2016)city_data$Full<-apply(city_data[,-1],1,sum)city_data$Full_scale<-scale(city_data$Full,center=F,scale=T)*2

#提取中心城市数据:city_data<-city_data%>%merge(province_city[,c("city","wd","jd")],by.x="Name",by.y="city",all.x=TRUE)

气泡饼图:

ggplot() +    
geom_polygon(data=china_map,aes(x=long,y=lat,group=group),fill="white",color="grey")+ geom_scatterpie(data=city_data,aes(x=jd,y=wd,r=Full_scale),cols=names(city_data)[2:7],color="grey", alpha=.8) + scale_fill_brewer(guide=FALSE)+ theme_void()

构造带有分类变量的气泡饼图数据:

city_data2<-data.frame(Name=rep(city_data$Name,6))
for (i in 2:4) city_data2[,i]<-runif(nrow(city_data2),10,100)names(city_data2)[2:4]<-paste0("Value",1:3)city_data2$Year<-rep(paste0("Year",2011:2016),each=6)city_data2<-city_data2%>%merge(city_data[,c("Name","jd","wd")],by="Name",all.x=T)city_data2$Full<-apply(city_data2[,2:4],1,sum)%>%scale(center=F,scale=T)city_data2$Full<-as.numeric(city_data2$Full)*2
city_data2<-city_data2%>%arrange(Year,Name)

高维分面饼图:

ggplot()+geom_polygon(data=china_map,aes(x=long,y=lat,group=group),fill="white",color="grey")+geom_scatterpie(data=city_data2,aes(x=jd,y=wd,r=Full),cols=names(city_data2)[2:4],color="grey", alpha=.8) +    scale_fill_brewer(guide=FALSE)+       facet_wrap(~Year)+    theme_void()

关于如何分析ggplot2分面气泡图饼图问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

0