边缘密度分布图 | ggExtra包/aplot拼图/ggpubr包 等的实现方法

概述:aplot 拼图效果好

根据网友探索[1],总结如下:

  • ggExtra 包的拼图间隙有点大,图例在主图和边缘图之间,除非去掉图例,否则没法看。
  • aplot包的默认拼图间隙很小,比较美观,图例在外面。
  • gridExtra包默认拼图之间的间隙比较大。
  • 另外仔细比较aplot包和gridExtra包的拼图结果,可以发现aplot包是把子图的panel区域对齐,而gridExtra包是把子图的plot区域对齐。
  • 结论:aplot包的对齐效果显然是我们需要的。

1. ggExtra 画边缘密度图

# 1. get data
set.seed(2024)
dat=diamonds[sample(1:nrow(diamonds), 1000),]
library(ggplot2)
# 2. base plot
# with legend
p1=ggplot(dat, aes(carat, price, color=clarity))+geom_point()+theme_classic()+theme(panel.border = element_rect(size = 1, colour = "black", fill="#00112200")); p1
# no legend
p2=ggplot(dat, aes(carat, price, color=clarity))+geom_point(show.legend = F)+theme_classic()+theme(panel.border = element_rect(size = 1, colour = "black", fill="#00112200")); p2# 3.margin density
library(ggExtra)
ggExtra::ggMarginal(p1+ggtitle("p1-A"), type = "density")
ggMarginal(p1+ggtitle("p1-B"), colour = "red")# no legend
ggMarginal(p2+ggtitle("p2-A"), groupColour = TRUE)
ggMarginal(p2+ggtitle("p2-B"),type = "density",groupColour = TRUE,groupFill = TRUE)
ggMarginal(p2+ggtitle("p2-C"),  xparams=list( fill = c("deeppink")),yparams=list( fill = c("navy")),color=NA)

在这里插入图片描述

2. ggplot2绘图+aplot拼图

library(RColorBrewer)
len=length( unique(dat$clarity) ); len #8# upper density
top_panel <- ggplot()+geom_density(data = dat,mapping=aes(carat, fill=clarity, color=clarity),alpha=0.5)+scale_fill_manual(values = brewer.pal(len,'Set2'))+ #设置填充颜色scale_color_manual(values = brewer.pal(len,'Set2'))+ # 设置线的颜色theme_void()+ # 设置主题theme(legend.position="none") # 去除图例
top_panel# 右侧密度分布图
right_panel <- ggplot()+geom_density(data=dat,aes(price, fill=clarity,color=clarity),alpha=0.5)+scale_fill_manual(values = brewer.pal(len,'Set2'))+ #设置填充颜色scale_color_manual(values = brewer.pal(len,'Set2'))+ # 设置线的颜色theme_void()+ # 设置主题coord_flip()+ # 翻转坐标轴theme(legend.position="none")# 去除图例
right_panel# aplot 包拼图
library(aplot)# no legend
p2 %>% insert_right(right_panel, width=.4) %>% insert_top(top_panel, height=0.2)  # with legend
p1 %>% insert_right(right_panel, width=.4) %>% insert_top(top_panel, height=0.2)  #ggsave('plot2.pdf',width = 6,height = 5)

在这里插入图片描述

3. ggpubr 包绘制边缘密度分布图

# fig1
library(ggpubr)
gp1<-ggscatterhist(iris, x = "Sepal.Length", y = "Sepal.Width",color = "Species", size = 3, alpha = 0.6)
gp1
# 不支持theme()
# gp1+theme(panel.background = element_rect(fill="#00112200", color="black"))# fig2
set.seed(2024)
dat=diamonds[sample(1:nrow(diamonds), 1000),]ggscatterhist(dat, x = "carat", y = "price",color = "clarity", size = 2, alpha = 0.6)# fig3
ggscatterhist(dat, x = "carat", y = "price",color = "clarity", size = 3, alpha = 0.6,#palette = c("#00AFBB", "#E7B800", "#FC4E07"),margin.params = list(fill = "clarity", color = "black", size = 0.2)
)# Fig4:指定主图黑边框(略)
ggscatterhist(dat, x = "carat", y = "price",color = "clarity", size = 3, alpha = 0.6,#palette = c("#00AFBB", "#E7B800", "#FC4E07"),margin.params = list(fill = "clarity", color = "black", size = 0.2),ggtheme = theme_classic() + #指定周围边框theme(panel.background = element_rect(fill="#00112200", color="black"))
)

在这里插入图片描述

Ref

  • [1] 分组p值箱线图 https://blog.csdn.net/weixin_46587777/article/details/138032368
  • [2] https://cran.r-project.org/web/packages/ggExtra/ggExtra.pdf
  • [3] https://cran.r-project.org/web/packages/ggExtra/vignettes/ggExtra.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/21068.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Cyber Weekly #9

赛博新闻 1、OpenAI&#xff1a;GPTs向全部用户开放&#xff0c;使用GPT-4o OpenAI宣布所有ChatGPT免费用户现在可以在GPT商店中使用GPTs&#xff0c;并且这些GPTs现在使用最新的GPT-4o模型。 2、马斯克 vs. Yann LeCun 这一周&#xff0c;AI圈最热闹的莫过于马斯克和LeCun的…

深入解析智慧互联网医院系统源码:医院小程序开发的架构到实现

本篇文章&#xff0c;小编将深入解析智慧互联网医院系统的源码&#xff0c;重点探讨医院小程序开发的架构和实现&#xff0c;旨在为相关开发人员提供指导和参考。 一、架构设计 智慧互联网医院系统的架构设计是整个开发过程的核心&#xff0c;直接影响到系统的性能、扩展性和维…

ZCU102启动镜像(详细版)

ZCU102启动镜像--详细版本 详细步骤1、安装好Vitis&#xff08;GUI界面&#xff09;、 Vivado、 Petalinux软件然后vivado这边的操作就先结束了 创建Petalinux工程编译镜像打包 详细步骤 B站参考视频链接: link 1、安装好Vitis&#xff08;GUI界面&#xff09;、 Vivado、 Pe…

Nocobase快速上手 - 开发第一个插件

在前面的几篇博文中&#xff0c;记录了在Nocobase中配置collection和界面&#xff0c;这篇文章开始插件的开发。插件可以扩展Nocobase的业务能力&#xff0c;解锁更强大的功能。 环境搭建 创建插件需要配置nocobase的开发环境&#xff0c;笔者采用的是clone 官方代码repo的方…

使用python下载股票数据至sqlite数据库

代码下载地址&#xff1a; https://download.csdn.net/download/weixin_44600457/89389489

2024四川三支一扶“考生信息表”照着填❗

2024四川三支一扶“考生信息表”照着填❗ ☑️四川三支一扶开始报名&#xff0c;大家要按照提示如实、准确、完整填写《高校毕业生“三支一扶”计划招募考生信息表》哦~ ☑️不知道怎么填写的宝子们&#xff0c;可以参考图1。 ☑️毕业证书编号如实填写&#xff0c;若是应届生&…

【JavaEE进阶】——MyBatis操作数据库 (#{}与${} 以及 动态SQL)

目录 &#x1f6a9;#{}和${} &#x1f388;#{} 和 ${}区别 &#x1f388;${}使用场景 &#x1f4dd;排序功能 &#x1f4dd;like 查询 &#x1f6a9;数据库连接池 &#x1f388;数据库连接池使⽤ &#x1f6a9;MySQL开发企业规范 &#x1f6a9;动态sql &#x1f388…

JetBrains的Ai assistant 直接激活一年的来用用

ai assistant激活成功后&#xff0c;如图 ai assistant渠道&#xff1a;https://web.52shizhan.cn/activity/ai-assistant 在去年五月份的 Google I/O 2023 上&#xff0c;Google 为 Android Studio 推出了 Studio Bot 功能&#xff0c;使用了谷歌编码基础模型 Codey,Codey 是…

[C#]使用C#部署yolov8的obb旋转框检测tensorrt模型

【测试通过环境】 win10 x64 vs2019 cuda11.7cudnn8.8.0 TensorRT-8.6.1.6 opencvsharp4.9.0 .NET Framework4.7.2 NVIDIA GeForce RTX 2070 Super 版本和上述环境版本不一样的需要重新编译TensorRtExtern.dll&#xff0c;TensorRtExtern源码地址&#xff1a;TensorRT-CShar…

mysql中基于规则的优化

大家好。我们在平时开发的过程中可能会写一些执行起来十分耗费性能的语句。当MySQL遇到这种sql时会依据一些规则&#xff0c;竭尽全力的把这个很糟糕的语句转换成某种可以比较高效执行的形式&#xff0c;这个过程被称作查询重写&#xff0c;今天我们就来聊一下mysql在查询重写时…

【UML用户指南】-05-对基本结构建模-类

在UML中&#xff0c;所有的事物都被建模为类。类是对词汇表中一些事物的抽象。类不是个体对象&#xff0c;而是描述一些对象的一个完整集合。 强调抽象的最重要的部分&#xff1a;名称、属性和操作 类 &#xff08;class&#xff09;是对一组具有相同属性、操作、关系和语义的对…

【transformers】pytorch基础

传送门&#xff1a;https://transformers.run/c2/2021-12-14-transformers-note-3/ pytorch基础知识 tensor &#xff1a; 张量。 需要知道的内容&#xff1a; 张量构建张量计算自动微分形状调整广播机制索引与切片升降维度 Tensor 张量&#xff1a;理解成高纬度的向量就完…

短视频毫无营养:四川京之华锦信息技术公司

短视频毫无营养&#xff1a;现象背后的深度剖析 在数字时代&#xff0c;短视频以其短小精悍、易于传播的特点迅速崛起&#xff0c;成为社交媒体上的热门内容。然而&#xff0c;随着短视频的泛滥&#xff0c;关于其内容质量参差不齐、缺乏营养价值的争议也日益加剧。四川京之华…

SELF-RAG: Learning to Retrieve, Generate, and Critique Through Self-reflection

更多文章&#xff0c;请关注微信公众号&#xff1a;NLP分享汇 原文链接&#xff1a;ICLR2024&#xff1a;能够自我反思的SELF-RAG 下面介绍的这篇论文是最近被ICLR 2024 accepted oral&#xff0c;作者来自University of Washington & Allen Institute for AI & IBM R…

leetcode:最近的请求次数

class RecentCounter { public:RecentCounter() {cou 0;}int ping(int t) {q.push(t);while(!q.empty()){auto Front q.front();if(t-Front>3000)q.pop();else break;}return q.size();} private:int cou;queue<int> q; }; 仅个人做法&#xff0c;非最优解

postgressql——事务提交会通过delayChkpt阻塞checkpoint(9)

事务提交会通过delayChkpt阻塞checkpoint Postgresql事务在事务提交时&#xff08;执行commit的最后阶段&#xff09;会通过加锁阻塞checkpoint的执行&#xff0c;尽管时间非常短&#xff0c;分析为什么需要这样做&#xff1a; 首先看提交堆栈 #1 0x0000000000539175 in Co…

Django表单革命:打造安全、高效、用户友好的Web应用

Django表单处理&#xff0c;听起来是不是有点枯燥&#xff1f;别急&#xff0c;阿佑将带你领略Django表单的艺术之美。我们将以轻松幽默的语言&#xff0c;一步步引导你从表单的创建到管理&#xff0c;再到验证和自定义&#xff0c;让你在不知不觉中掌握Django表单的精髓。文章…

支付宝支付(沙盒支付)

后端页面代码 Controller RequestMapping("/pay") public class PayController {private String orderId;Autowiredprivate OrdersService ordersService;Value("${appId}")private String appId;Value("${privateKey}")private String private…

奇安信 网神SecGate 3600防火墙 (相关问题整理)

本文所有问题&#xff0c;基于实际项目中出的问题&#xff0c;设备&#xff1a;网神SecGate 3600防火墙 会话记录 数据中心>会话>会话监控&#xff0c;终端发起SYN请求&#xff0c;就能看到记录&#xff0c;无需完全建立TCP连接 默认安全策略 防火墙的安全策略中&…

CAD二次开发(7)- 实现Ribbon选项卡,面板,功能按钮的添加

1. 创建工程 2. 需要引入的依赖 如图&#xff0c;去掉依赖复制到本地 3. 代码实现 RibbonTool.cs 实现添加Ribbon选项卡&#xff0c;添加面板&#xff0c;以及给面板添加下拉组合按钮。 using Autodesk.Windows; using System; using System.Collections.Generic; using S…