R语言绘制散点密度图ggdentity

使用R语言绘制二维密度图

下图是一张常见的二维核密度散点图,能够清晰直观的反映出数据之间的分布趋势,颜色越红的位置数据越集中分布。今天分享的笔记是在R语言中绘制该图的两种常见方法,提供过程代码。

论文中常见的这种展示两组数据之间分布趋势的图,其实也是一种散点图,只是用不同颜色来映射了点的密度大小,通常是渐变色来展示数据的变化规律。

方法一:ggpointdensity

这个包结合了散点图和密度图的特点,是 ggplot2 的一个扩展,使用户能够创建点密度图,其中点的颜色和大小可以表示数据点在特定区域的局部密度,从而直观地揭示出数据的集中趋势。

安装与使用方法

复制代码
install.packages("ggpointdensity")
library(ggpointdensity)
library(viridis) # 使用viridis提供的翠绿色标度:scale_fill_viridis()

安装完成后开始绘图,首先生成测试数据

复制代码
df <- data.frame("x" = rnorm(10000), "y" = rnorm(10000))
> head(df)
           x           y
1  0.2505781  0.05379511
2 -0.2779240  0.75343075
3 -1.7247357  0.24985048
4 -2.0067049 -0.44410484
5 -1.2918083 -0.05027016
6  0.3658382 -0.46777918

如果你有实际数据,也可以按照这种方式进行整理,比如在excel中整理好,分成两列,分别代表横轴和纵轴,然后导入R语言中进行绘图。

复制代码
ggplot(df)+
    geom_pointdensity(aes(x=x,y=y))

绘图的核心函数geom_pointdensity生成散点密度图,如果直接运行,结果图如下:

看起来配色不太好看,换成青翠渐变色:

复制代码
ggplot(df)+
    geom_pointdensity(aes(x=x,y=y))+
    scale_color_viridis() +
    theme_bw()

添加scale_color_viridis函数修改配色:

方法二:ggdensity

这个包也是属于ggplot2扩展包,用于绘制密度图,效果和刚才差不多,优点是提供geom_hdr函数,功能比较多。

安装与使用方法

复制代码
install.packages("ggdensity")
if (!requireNamespace("remotes")) install.packages("remotes")
remotes::install_github("jamesotto852/ggdensity")

还是使用刚刚创建的假数据来展示:

复制代码
p <- ggplot(df, aes(x, y)) + coord_equal()
p1 <- p + geom_density_2d_filled()+
    theme_bw()
p1

这样获得了一张基础布局的密度图,展示的是等高线,geom_density_2d_filled是ggplot2自带的二维填充绘图函数。

复制代码
p1<-p + geom_hdr()

如果是使用geom_hdr函数的话,作图效果如下所示:

我问还可以修改边缘线,比如让曲线变成圆形布局或者其他布局,也可以按照小方块进行渲染,类似于GPU显卡计算图像,通过统计每个小方块儿里面点的数量来进行颜色映射。

复制代码
p2<-p + geom_hdr(method = "mvnorm")
复制代码
p4<-p + geom_hdr(method = "histogram")

以上就是今天分享的密度图小技巧,感谢您的阅读,如果感觉有所帮助,欢迎点赞转发,下期教程分享R语言中绘制动态交互式热图的方法。

参考资料
复制代码
https://blog.csdn.net/weixin_40575651/article/details/107038516
https://rpkgs.datanovia.com/ggpubr/reference/ggdensity.html
https://github.com/jamesotto852/ggdensity
https://cloud.tencent.com/developer/article/2297184

本文由mdnice多平台发布

相关推荐
leobertlan7 小时前
2025年终总结
前端·后端·程序员
面向Google编程7 小时前
从零学习Kafka:数据存储
后端·kafka
易安说AI8 小时前
Claude Opus 4.6 凌晨发布,我体验了一整晚,说说真实感受。
后端
易安说AI8 小时前
Ralph Loop 让Claude无止尽干活的牛马...
前端·后端
易安说AI8 小时前
用 Claude Code 远程分析生产日志,追踪 Claude Max 账户被封原因
后端
颜酱9 小时前
图结构完全解析:从基础概念到遍历实现
javascript·后端·算法
Coder_Boy_12 小时前
基于SpringAI的在线考试系统-考试系统开发流程案例
java·数据库·人工智能·spring boot·后端
掘金者阿豪13 小时前
关系数据库迁移的“暗礁”:金仓数据库如何规避数据完整性与一致性风险
后端
ServBay13 小时前
一个下午,一台电脑,终结你 90% 的 Symfony 重复劳动
后端·php·symfony
sino爱学习13 小时前
高性能线程池实践:Dubbo EagerThreadPool 设计与应用
java·后端