R中利用ggplot2绘制气泡图

闲来无事,整理了一下自己的绘图笔记,顺便分享到CSDN上。

一、介绍

气泡图(Bubble Plot)是一种常用的数据可视化方法,用于展示三个变量之间的关系。气泡图的特点是通过气泡的大小、颜色和位置来表达数据中的多维信息。在R中,ggplot2包是绘制气泡图的强大工具,它通过灵活的语法和丰富的可定制选项,能够帮助我们轻松地创建直观、清晰的数据可视化图表。

气泡图的基本构成

气泡图通常需要三个重要的变量:

X轴和Y轴:用来表示两个变量的关系,通常是数据的主要趋势或分类。

气泡的大小:反映第三个变量的大小或频率,通常用于显示量化信息。

气泡的颜色:用来表示变量的不同类别或对比性强的数据特征。

二、绘图

假设我们有一个数据集:包括x、y、size和group,其中x和y代表位置坐标,z代表气泡的大小,group设置气泡的颜色类别。我们可以通过以下代码利用ggplot2包来绘制气泡图:

bash 复制代码
rm(list = ls())
library(ggplot2)

set.seed(1)
#定义一个随机的数据集
df=data.frame(x=c(rnorm(20,1,3),rnorm(20,5,3),rnorm(20,10,3),rnorm(20,15,3),rnorm(20,20,3),rnorm(20,25,3)),
              y=c(rnorm(20,1,3),rnorm(20,5,3),rnorm(20,10,3),rnorm(20,15,3),rnorm(20,20,3),rnorm(20,25,3)),
              z=rnorm(120,20,100),
               group=rep(LETTERS[1:6],each=20))

数据集如下图所示

利用ggplot2绘制气泡图

bash 复制代码
p=ggplot()+
  #x和y代表位置坐标,z代表气泡的大小,group设置气泡的颜色类别,alpha设置透明度
  geom_point(data=df,aes(x=x,y=y,color=group,size=z),alpha=0.8)+ 
  #设置气泡颜色
  scale_color_manual(values = c("#4766c2","#96dd73","#f9bc34","#e84545",
                                "#51b1d6",'#59ab85','#fc7f4a'))+
  #设置主题
  theme_bw()+
  #设置气泡大小范围
  scale_size_continuous(range = c(1,10))+
  theme(legend.position = 'none', #删除图例
        panel.grid.minor = element_blank(), #删除次grid
        panel.grid.major = element_line(linewidth = 0.4), #设置主grid
        axis.text = element_text(size=14), #坐标轴text设置
        axis.title = element_text(size=16))+ #坐标轴lab设置
  labs(x='x',y='Y') #x和y轴lab设置
p
ggsave(p,file='1.pdf',width = 5,height = 4)

这个配色还是蛮好看的。

三、总结

利用R中的ggplot2包绘制气泡图,是一种直观而有效的数据可视化方式。通过调整气泡的大小、颜色以及坐标轴的设置,可以展示多维数据的关系。气泡图在多个领域都有广泛的应用,尤其是在需要展示三个变量关系的情况下,其清晰且富有表现力的图形特征,使得它成为数据分析和决策支持中不可或缺的工具之一 (文中介绍及结论来自Chatgpt4.0,我是真的懒得扩展这些东西,真想只放代码)。

相关推荐
少控科技18 分钟前
QT第6个程序 - 网页内容摘取
开发语言·qt
darkb1rd18 分钟前
八、PHP SAPI与运行环境差异
开发语言·网络安全·php·webshell
历程里程碑20 分钟前
Linux20 : IO
linux·c语言·开发语言·数据结构·c++·算法
郝学胜-神的一滴22 分钟前
深入浅出:使用Linux系统函数构建高性能TCP服务器
linux·服务器·开发语言·网络·c++·tcp/ip·程序人生
承渊政道26 分钟前
Linux系统学习【Linux系统的进度条实现、版本控制器git和调试器gdb介绍】
linux·开发语言·笔记·git·学习·gitee
JQLvopkk1 小时前
C# 轻量级工业温湿度监控系统(含数据库与源码)
开发语言·数据库·c#
玄同7651 小时前
从 0 到 1:用 Python 开发 MCP 工具,让 AI 智能体拥有 “超能力”
开发语言·人工智能·python·agent·ai编程·mcp·trae
czy87874751 小时前
深入了解 C++ 中的 `std::bind` 函数
开发语言·c++
消失的旧时光-19431 小时前
从 Kotlin 到 Dart:为什么 sealed 是处理「多种返回结果」的最佳方式?
android·开发语言·flutter·架构·kotlin·sealed
yq1982043011561 小时前
静思书屋:基于Java Web技术栈构建高性能图书信息平台实践
java·开发语言·前端