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

相关推荐
捂月43 分钟前
Spring Boot 核心逻辑与工作原理详解
java·spring boot·后端
Nightselfhurt1 小时前
RPC学习
java·spring boot·后端·spring·rpc
Estar.Lee8 小时前
查手机号归属地免费API接口教程
android·网络·后端·网络协议·tcp/ip·oneapi
2401_8576100310 小时前
SpringBoot社团管理:安全与维护
spring boot·后端·安全
凌冰_10 小时前
IDEA2023 SpringBoot整合MyBatis(三)
spring boot·后端·mybatis
码农飞飞10 小时前
深入理解Rust的模式匹配
开发语言·后端·rust·模式匹配·解构·结构体和枚举
一个小坑货10 小时前
Rust 的简介
开发语言·后端·rust
AskHarries10 小时前
如何将Spring Cloud Task发布Data Flow上执行?
java·后端·spring cloud
monkey_meng11 小时前
【遵守孤儿规则的External trait pattern】
开发语言·后端·rust
Estar.Lee11 小时前
时间操作[计算时间差]免费API接口教程
android·网络·后端·网络协议·tcp/ip