scatterpie | ggplot2的几何图形拓展包(1):如何在地图中添加饼图
前几天有读者在知乎上咨询“散点饼图”的问题,用的是scatterpie
工具包,这是ggplot2绘图系统的一个拓展包,一共就包含三个函数:
geom_scatterpie
geom_scatterpie_legend
recenter
下面是geom_scatterpie()
函数的语法结构:
geom_scatterpie(mapping = NULL,data,cols,pie_scale = 1,sorted_by_radius = FALSE,legend_name = "type",long_format = FALSE,...
)
cols:绘制饼图的变量名,至少需要两个;
r:使用在映射函数中的参数,用于指定饼图半径大小。
library(ggplot2)
library(scatterpie)
data.frame(x = c(2,4,7,3),y = c(1,3,6,4),a = 1:4,b = 4:1
) -> data
ggplot() +geom_scatterpie(aes(x,y), data,cols = c("a","b")) +theme_bw()
下面这种写法就会报错:
ggplot(data, aes(x,y)) +geom_scatterpie(cols = c("a","b")) +theme_bw()
# Error in diff(range(data[, xvar])) : 缺少参数"data",也没有缺省值
一般来说,在ggplot2绘图系统中,ggplot()
函数指定的是全局参数,几何图形函数没有指定的参数就会自动继承全局的参数,但从上面的报错来看,scatterpie
工具包并没有适配这一特点,因此在使用时需要注意。
虽然具有“散点”的特征,但是散点饼图的颜色和形状属性通常不能用于映射,可用的主要是大小属性,也就是半径。
data$r = c(0.2,0.1,0.3,0.4)
ggplot() +geom_scatterpie(aes(x ,y,r = r), data,cols = c("a","b"),alpha = 0.5) +theme_bw()
geom_scatterpie_legend()
函数可以用来呈现关于半径的图例,完整的语法结构如下:
geom_scatterpie_legend(radius,x, y,n = 5,labeller)
radius:控制半径的变量;该参数同样不能继承自全局;
x,y:图例放置的横、纵坐标;
n:呈现的环形个数;
labeller:半径到标签的映射函数,可缺省。
效果如下:
ggplot() +geom_scatterpie(aes(x ,y,r = r), data,cols = c("a","b"),alpha = 0.5) +geom_scatterpie_legend(data$r, n = 4,x = 6, y = 2) +theme_bw()
上图中,图例中的半径从内到外依次为0.1、0.2、0.3、0.4,与标签显示的相同,但它实际代表的值可能是10、20、30、40,这时就可以使用labeller
参数进行转换。
ggplot() +geom_scatterpie(aes(x ,y,r = r), data,cols = c("a","b"),alpha = 0.5) +geom_scatterpie_legend(data$r, n = 4,x = 6, y = 2,labeller = function(x) {100*x}) +theme_bw()
也可以在地图上添加饼图:
library(sf)
China <- read_sf("./China/省.shp")
data.frame(A = rpois(35,6),B = rpois(35,2),C = rpois(35,12),lon = st_coordinates(st_centroid(China))[,1],lat = st_coordinates(st_centroid(China))[,2]
) -> dfggplot(China) +geom_sf() +geom_scatterpie(aes(x = lon, y = lat),data = df,cols = c("A", "B", "C")) +theme_bw()
这里与前面存在同样一个问题:在绘制地图中,
ggplot2
原生的函数geom_sf()
能够自动识别出空间数据的坐标信息,因此不需要再指定x
和y
参数,而geom_scatterpie()
函数由于不能继承全局参数,数据源、坐标信息等参数都需要单独指定。
总体来说,scatterpie
工具包并没有完全地适配ggplot2
绘图系统的特点,因此在使用时略显繁琐,但它丰富了几何图形函数的类型还是值得肯定的,希望后续版本能够更加优化。
scatterpie | ggplot2的几何图形拓展包(1):如何在地图中添加饼图相关推荐
- R语言ggplot2可视化在可视化图形的X轴标签中添加温度摄氏度符号(add temperature degree symbol on axis label)
R语言ggplot2可视化在可视化图形的X轴标签中添加温度摄氏度符号(add temperature degree symbol on axis label) 目录
- ggspatial | ggplot2的地图制作拓展包(1):如何添加指北针和比例尺
在前面的推文里,小编介绍了R语言的基础绘图系统和tmap工具包绘制地图的方法.ggplot2工具包作为现在最受欢迎的绘图包,其本身绘制地图的功能并不算强大.但是ggplot2有许多优秀的拓展包,它们共 ...
- android studio添加v7包,如何在Android Studio中添加RecyclerView-v7支持包
一直知道RecyclerView可以代替ListView.GridView使用,聽說功能很強大,但還沒有去學習過.今天想學習,沒想到還沒開始便撞牆了.輸入Recycler,只有這兩個東西,沒有提示Re ...
- ggsci | ggplot2的颜色标度拓展包(1):科研配色风格
ggsci是一个知名的ggplot2拓展包,工具包名称中的sci是science的缩写.它的开发者是两个中国人:Nan Xiao <https://nanx.me>.Miaozhu Li ...
- pip安装拓展包--网络超时/Read timed out问题
pip安装拓展包--网络超时/Read timed out问题 解决方案:切换镜像源(墙皮太厚) 在后面加上: -i https://pypi.douban.com/simple example: p ...
- R语言ggplot2可视化:使用dplyr包计算每个分组个数的比例(对计算获得的百分比进行近似,值保留整数部分)、使用ggplot2可视化条形图(bar plot)、并在条形图上添加百分比标签
R语言ggplot2可视化:使用dplyr包计算每个分组个数的比例(对计算获得的百分比进行近似,值保留整数部分).使用ggplot2可视化条形图(bar plot).并在条形图上添加百分比标签 目录
- R语言ggplot2可视化散点图并添加平滑曲线、WVPlots包BinaryYScatterPlot函数可视化一起中一个变量为二元离散变量的散点图(随着年龄变化是否有健康保险的客户的比例)
R语言ggplot2可视化散点图并添加平滑曲线.WVPlots包BinaryYScatterPlot函数可视化一起中一个变量为二元离散变量的散点图(随着年龄变化是否有健康保险的客户的比例) 目录
- R语言ggplot2可视化使用ggridges包可视化山脊图(Ridgeline Plots):山脊图(Ridgeline Plots)应用场景、受试者口服茶碱的之后观察茶碱的浓度变化的山脊图
R语言ggplot2可视化使用ggridges包可视化山脊图(Ridgeline Plots):山脊图(Ridgeline Plots)应用场景.受试者口服茶碱的之后观察茶碱的浓度变化的山脊图(Rid ...
- windows下python依赖包_windows下安装python拓展包
安装Python集成开发环境IDE 2.IPython:方便今后编译其他扩展库,占用空间92.8M: sudo apt-get install python-dev IPython 为了安装最新版的I ...
最新文章
- CF1037H Security——SAM+线段树合并
- 关于手机的,发送验证码,正则
- 以非泛型方式调用泛型方法(三)
- tensorflow mnist read_data_sets fails
- 网站服务器令牌获取,adobe - 获取Adobe Sign访问令牌以进行服务器到服务器身份验证 - 堆栈内存溢出...
- js去掉第一个换行符_通过异步迭代简化Node.js流程
- 【Java从0到架构师】MySQL 基础
- 为什么需要学习编程?
- web.xml:url-pattern
- 《Android 应用案例开发大全(第3版)》——第1.2节掀起Android的盖头来
- nexus的下载与安装和启动
- u盘修复计算机w7,制作win7系统修复u盘的方法
- ubuntu报错:RuntimeError : unexcepted EOF, excepted 2599001 more bytes. The file might be corrupted.
- SpringBoot 生成带水印pdf | 中文字体问题
- Java单词首字母小写转大写
- robots.txt文件示例
- Element修改图标大小,设置颜色
- 虚拟现实的起源、趋势及应用
- ffmpeg---ffmpeg + x264 + fdk-aac + mp3lame 安装
- Unity在URP管线下使用TriLib插件加载模型材质不正确的问题