您的位置:首页 > 科技 > IT业 > 展示型网站php_公司资质介绍模板_广东东莞疫情最新情况_网站搜索引擎推广

展示型网站php_公司资质介绍模板_广东东莞疫情最新情况_网站搜索引擎推广

2024/12/29 2:15:29 来源:https://blog.csdn.net/qq_40483688/article/details/142926527  浏览:    关键词:展示型网站php_公司资质介绍模板_广东东莞疫情最新情况_网站搜索引擎推广
展示型网站php_公司资质介绍模板_广东东莞疫情最新情况_网站搜索引擎推广

这一期呢,小编给回应读者的需求,绘制在地图上添加饼图的可视化作品,这类图表在GIS或生态方面涉及的比较多哈。本期内容主要如下:

  • R-scatterpie包主要函数介绍

  • R-scatterpie包实例演示

R-scatterpie包主要函数介绍

要想在地图上绘制饼图,使用常规的ggplot2较为繁琐,得益于丰富第三方包,我们可以使用scatterpie包轻松实现该需求。scatterpie包主要有:

  • geom_scatterpie()

  • geom_scatterpie_legend()

前者主要用于绘制饼图绘制,后者则对应绘制饼图大小的图例,具体可参考如下链接:https://cran.r-project.org/web/packages/scatterpie/vignettes/scatterpie.html

接下来,小编将结合具体实际例子用于帮助小伙伴们理解scatterpie绘制函数,快速绘制带饼图的空间地图可视化作品。

R-scatterpie包实例演示

这一部分我们分别通过虚构数据绘制美国和中国的饼图地图作品,所使用的数据也会在文末给出免费获取方式。

  • 以美国地图为例 数据处理代码如下(较为简单且都有注释):

#导入包
library(readxl)
library(albersusa)
library(biscale)
library(sf)
library(tidyverse)
library(hrbrthemes)
library(ggtext)
library(scatterpie)
library("ggsci")#读入虚构数据
data_test <- read_excel("usa_lon_lat.xlsx")
#转换投影
data_test_pro <- data_test %>% sf::st_as_sf(coords = c("lon", "lat"),crs = 4326)%>% st_transform(crs = 2163)
#将结果经纬度信息单独列出并准换成DF类型
data_test_pro  <-  data_test_pro %>% dplyr::mutate(lon = sf::st_coordinates(.)[,1],lat = sf::st_coordinates(.)[,2])%>% select(values01,values02,values03,total,lon,lat)%>%data.frame(stringsAsFactors = F) #可视化绘制
US_map <- ggplot()+geom_sf(data = us_sf,size=.125,aes(geometry = geometry)) +scatterpie::geom_scatterpie(data=data_select,aes(x = lon,y = lat,r=total*40),cols=c("values01","values02","values03"),alpha=.9) +geom_scatterpie_legend(data_select$total*40, x=2068885.4, y=-2242789,n = 3,labeller=function(x) x/40) +scale_fill_jco(name="Type") +labs(x="",y="",title = "Example of <span style='color:#D20F26'>scatterpie::geom_scatterpie function</span>",subtitle = "processed charts with <span style='color:#1A73E8'>usa map()</span>",caption = "Visualization by <span style='color:#DD6449'>DataCharm</span>") +theme_ipsum(base_family = "Roboto Condensed") +theme(plot.title = element_markdown(hjust = 0.5,vjust = .5,color = "black",size = 20, margin = margin(t = 1, b = 12)),plot.subtitle = element_markdown(hjust = 0,vjust = .5,size=15),plot.caption = element_markdown(face = 'bold',size = 12)) 

注意:geom_scatterpie_legend()中x,y的位置为转换后的数据哈。可视化结果如下:

Scatterpie Map Example of USA

Scatterpie Map Example of USA

  • 以中国地图为例 同样的,我们还是虚构数据构建关于中国的类似地图的绘制,详细绘制代码如下:

china_data <- read_excel("China_lon_lat.xlsx")
china_data_pro <- china_data %>% sf::st_as_sf(coords = c("lon", "lat"),crs = 4326)%>% st_transform(crs = 2343)%>% dplyr::mutate(lon = sf::st_coordinates(.)[,1],lat = sf::st_coordinates(.)[,2])%>% select(data01,data02,data03,total,lon,lat) %>% data.frame(stringsAsFactors = F) 
#读取中国地图文件信息
china_shp <- "中国省级地图GS(2019)1719号.geojson"
nine <- "九段线GS(2019)1719号.geojson"
china <- sf::read_sf(china_shp)
nine_line <- sf::read_sf(nine)
# 可视化绘制
china_map <- ggplot()+geom_sf(data = china,fill="gray90",size=.125,color="black") + geom_sf(data = nine_line,size=.125) + coord_sf(crs = 2343) +scatterpie::geom_scatterpie(data=china_data_select,aes(x = lon,y = lat,r=total*500),cols=c("data01","data02","data03"),alpha=.9) +geom_scatterpie_legend(china_data_select$total*500,x = 25000,y=1500000,n = 3,labeller=function(x) x/500) +scale_fill_nejm(name="Type") +labs(x="",y="",title = "Example of <span style='color:#D20F26'>scatterpie::geom_scatterpie function</span>",subtitle = "processed charts with <span style='color:#1A73E8'>China map</span>",caption = "Visualization by <span style='color:#DD6449'>DataCharm</span>") +theme_ipsum(base_family = "Roboto Condensed") +theme(plot.title = element_markdown(hjust = 0.5,vjust = .5,color = "black",size = 20, margin = margin(t = 1, b = 12)),plot.subtitle = element_markdown(hjust = 0,vjust = 0,size=15),plot.caption = element_markdown(face = 'bold',size = 12)) 

可视化结果如下(小编使用了ggsci包的不同颜色主题哦):

Scatterpie Map Example of China

Scatterpie Map Example of China

以上,就是本期推文的全部内容,较为简单且常用,希望小伙伴们能够喜欢,别忘了获取练习数据进行复现哦~

总结

本期算是解决一个读者的提问了哈,希望大家有所收获

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com