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多平台发布

相关推荐
man20171 小时前
【2024最新】基于springboot+vue的闲一品交易平台lw+ppt
vue.js·spring boot·后端
hlsd#2 小时前
关于 SpringBoot 时间处理的总结
java·spring boot·后端
路在脚下@2 小时前
Spring Boot 的核心原理和工作机制
java·spring boot·后端
幸运小圣2 小时前
Vue3 -- 项目配置之stylelint【企业级项目配置保姆级教程3】
开发语言·后端·rust
前端SkyRain3 小时前
后端Node学习项目-用户管理-增删改查
后端·学习·node.js
提笔惊蚂蚁3 小时前
结构化(经典)软件开发方法: 需求分析阶段+设计阶段
后端·学习·需求分析
老猿讲编程3 小时前
Rust编写的贪吃蛇小游戏源代码解读
开发语言·后端·rust
黄小耶@3 小时前
python如何使用Rabbitmq
分布式·后端·python·rabbitmq
宅小海5 小时前
Scala-List列表
开发语言·后端·scala
蔚一6 小时前
Javaweb—Ajax与jQuery请求
前端·javascript·后端·ajax·jquery