• R语言绘制散点密度图ggdentity


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

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

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

    方法一:ggpointdensity

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

    安装与使用方法

    install.packages("ggpointdensity")
    library(ggpointdensity)
    library(viridis) # 使用viridis提供的翠绿色标度:scale_fill_viridis()
    • 1

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

    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
    • 1

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

    ggplot(df)+
        geom_pointdensity(aes(x=x,y=y))
    • 1

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

    alt

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

    ggplot(df)+
        geom_pointdensity(aes(x=x,y=y))+
        scale_color_viridis() +
        theme_bw()
    • 1

    添加scale_color_viridis函数修改配色: alt

    方法二:ggdensity

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

    安装与使用方法

    install.packages("ggdensity")
    if (!requireNamespace("remotes")) install.packages("remotes")
    remotes::install_github("jamesotto852/ggdensity")
    • 1

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

    p <- ggplot(df, aes(x, y)) + coord_equal()
    p1 <- p + geom_density_2d_filled()+
        theme_bw()
    p1
    • 1
    alt

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

    p1<-p + geom_hdr()
    • 1

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

    alt

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

    p2<-p + geom_hdr(method = "mvnorm")
    • 1
    alt
    p4<-p + geom_hdr(method = "histogram")
    • 1
    alt

    以上就是今天分享的密度图小技巧,感谢您的阅读,如果感觉有所帮助,欢迎点赞转发,下期教程分享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
    • 1

    本文由 mdnice 多平台发布

  • 相关阅读:
    再获两家头部车企量产定点,本土HUD新玩家拼了!
    Java基础学习:深入解析Java中的位运算符
    android-service生命周期的实践结果
    计算机网络第一章(计算机网络开篇)
    Java 21 新特性:switch的模式匹配
    怎么最快制作爆款短视频—今抖云创
    FastTunnel在Ubuntu上以服务方式部署并开机自启动(.NET Core)
    基于YOLOv5[n/s/m/l/x]全系列参数模型开发构建小麦麦穗智能化精准检测识别计数系统
    Docker容器教程
    Spring源码解析——AOP的使用及AOP自定义标签
  • 原文地址:https://blog.csdn.net/ZaoJewin/article/details/136646186