R语言:3个R包实现ggplot2图形系统中的图形嵌套功能

有时候我们需要在一个图形上叠加或添加另一个图形,ggplot2图形系统是R目前使用最广泛的图形系统,今天来学习一下怎么在ggplot2图形系统中叠加或嵌套其他图形。

主要介绍3个R包实现嵌套功能。

1. 绘制演示图形

绘制一个主图,绘制一个子图。

library(ggplot2)
library(patchwork)
mtcars$vs <- factor(mtcars$vs)
mtcars$gear <- factor(mtcars$gear)
# 主图
b <- ggplot(mtcars, aes(mpg, wt)) +
  geom_point(size = 2) +
  theme_bw(base_size = 10)
# 子图
c <- ggplot(mtcars, aes(mpg, disp, fill = gear)) +
  geom_boxplot() +
  theme_bw(base_size = 8) +
  theme(legend.position = c(0.8, 0.6))
b + c
4d069bc525a0f615cb30f2553dc88671.png

2. grid 包嵌套子图

创建视图窗口函数为grid 包的viewport()。

subvp <- viewport(width = 0.5, height = 0.5, x = 0.7, y = 0.6)
b
print(c, vp = subvp)
26cc1ef3e65a426ad5bbac54658779fd.png

3. ggplot2 包嵌套子图

可以通过添加注释(annotate) 的方式,向一个图形内部添加一个小图形。

g <- ggplotGrob(c + theme(plot.background = element_rect(color = "white")))
b +
  annotation_custom(grob = g,
                    xmin = 20, xmax = 32, ymin = 3, ymax = 5.2)
70a7f9bf8c530932858c29c7e3e21ada.png

4. ggpp 包嵌套子图

library(ggpp)
p <- ggplot(data = mtcars, mapping = aes(wt, mpg)) +
  geom_point()

df <- tibble(x = 0.01,
             y = 0.01,
             plot = list(p +
                           coord_cartesian(xlim = c(3, 4),
                                           ylim = c(13, 16)) +
                           labs(x = NULL, y = NULL) +
                           theme_bw(10)))
p +
  expand_limits(x = 0, y = 0) +
  geom_plot_npc(data = df,
                aes(npcx = x, npcy = y, label = plot))
4259fb8ebe3b3e494450fbfe373687f8.png

以上3个R包都可以实现ggplot图形系统的子图嵌套功能。

本公众提供各种科研服务了!

一、课程培训

2022年以来,我们召集了一批富有经验的高校专业队伍,着手举行短期统计课程培训班,包括R语言、meta分析、临床预测模型、真实世界临床研究、问卷与量表分析、医学统计与SPSS、临床试验数据分析、重复测量资料分析、nhanes、孟德尔随机化等10门课。如果您有需求,不妨点击查看:

发表文章后退款!2023年郑老师团队多门科研统计直播课程,欢迎报名

二、统计服务

为团队发展,我们将与各位朋友合作共赢,本团队将开展统计分析服务,帮忙进行临床科研。欢迎了解详情:

医学统计服务| 医公共数据库论文一对一指导

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值