如何使用 ggplot2 在同一绘图区域内绘制绘图的缩放?

2024-02-16

这个问题看起来很难理解,但是为了说明一下,我举个图来举例:

我正在尝试复制这张图。到目前为止,我已经单独完成了图形,但我不知道如何将它们组合在一起,如示例所示。

有什么帮助吗?

time <- seq(from = 0,
            to = 10,
            by = 0.5)

line_1 <- c(0, 0, 0, 66, 173, 426, 1440, 800, 1200, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
line_2 <- c(0, 0, 0, 0, 0, 0, 0, 0, 1000, 25000, 5000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

df <- data.frame(time, line_1, line_2)

library(ggpubr)

#the plot
ggplot(data = df, aes(x = time)) +
  geom_line(aes(y = line_2), color = "red",
            position = position_nudge(x = 0.5, y = 1000)) +
  geom_line(aes(y = line_1),color = "blue") +
  geom_rect(aes(xmin = 1, xmax = 5, ymin = 0, ymax = 1500), color = "black", alpha = 0) +
  theme_pubr( base_size = 8,
              border = TRUE)

#The plot with a zoom
ggplot(data = df, aes(x = time, y = line_1)) +
  geom_line(color = "blue") +
  xlim (1, 5) +
  ylim (0, 1500) +
  theme_pubr( base_size = 8,
              border = TRUE)

您可以使用自定义注释

p1 = ggplot(data = df, aes(x = time)) +
  geom_line(aes(y = line_2), color = "red", position = position_nudge(x = 0.5, y = 1000)) +
  geom_line(aes(y = line_1),color = "blue") +
  geom_rect(aes(xmin = 1, xmax = 5, ymin = 0, ymax = 1500), color = "black", alpha = 0) +
  theme_pubr( base_size = 8, border = TRUE)

#The plot with a zoom
p2 = ggplot(data = df, aes(x = time, y = line_1)) +
  geom_line(color = "blue") +
  xlim (1, 5) +
  ylim (0, 1500) +
  theme_pubr( base_size = 8,border = TRUE)

p1 + 
  annotation_custom(ggplotGrob(p2), xmin = 0, xmax = 4, ymin = 5000, ymax = 20000) +
  geom_rect(aes(xmin = 0, xmax = 4, ymin = 5000, ymax = 20000), color='black', linetype='dashed', alpha=0) +
  geom_path(aes(x,y,group=grp), 
            data=data.frame(x = c(1,0,5,4), y=c(1500,5000,1500,5000),grp=c(1,1,2,2)),
            linetype='dashed')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 ggplot2 在同一绘图区域内绘制绘图的缩放? 的相关文章

  • 使用 ff 包导入文本文件

    我有一个包含 450 万行和 90 列的文本文件要导入到 R 中 read table我得到了cannot allocate vector of size 错误消息 因此我尝试使用 ff 包导入 然后再对数据进行子集化以提取我感兴趣的观察结
  • 根据“df1”的一个变量(“df1$var1”)在“df1”中创建一个变量,并根据“df1$var1”创建一个可更改的“df2”变量

    我有数据框df1总结了一段时间内鱼的深度 df1 Site告诉你鱼所在的地点 df1 Ind告诉你个人和df1 Depth告诉您鱼在特定位置的深度df1 Datetime 另一方面 我有df2总结了一段时间内 每三小时 从表面到 39 米深
  • Flutter:如何在 Web 视图中启用手势?

    我想在 Flutter 中通过捏合和张开来放大我的网页视图页面 我在网上做了一些研究 我在某处发现了这个 虽然 WebView Android 和 UIWebView iOS 内置了捏合和缩放功能 但它们需要 打开 在Android中 插件
  • 如何从包含 htmlwidget 的 rmarkdown 文件生成 md 文件

    我正在用这个 rmd 创建一个 html 文件 title test author me date r Sys Date output html document r data HairEyeColor rpivotTable rpivot
  • 为什么连接终止

    我正在尝试使用随机森林分类模型H2OR 内部的库 训练集有 7000 万行和 25 个数字特征 总文件大小为 5 6 GB 验证文件的大小为 1 GB 我的系统有 16 GB RAM 和 8 核 CPU 系统成功读取 H2O 对象中的两个文
  • 使用 markovchain 包计算观察序列的概率

    让我们使用来自的数据集这个问题 https stats stackexchange com questions 26722 calculate transition matrix markov in r dat lt data frame
  • R - 按列比较两行并将结果写入表中

    我是 R 新手 可能我的问题的解决方案非常简单 但目前我无法实现 我想按列比较数据框中的行 每列中的数据是一个字母 核苷酸碱基 seq1 A C T G T seq2 A C G G G seq3 A G G C A 我想按列比较数据集中的
  • R 复平面上的多重根

    我一直在尝试找到一个返回方程的所有复数解的函数 例如 16 1 4 2 i0 2 i0 0 i2 0 i2 就目前情况而言 如果我输入16 1 4 进入控制台 它只返回 2 我可以为此编写一个函数 但我想知道在 R 中是否有一种简单的方法可
  • 如何在 purrr::map_df 之后使用映射向量添加列

    我使用 mtcars 数据集作为示例来说明我的问题 我对每种气缸类型进行了线性回归 并使用 map df 将所有模型结果放在一起 下面的代码和输出 我想要做的是添加另一列名为 圆柱体 4 4 6 6 8 8 我怎样才能在map df中做到这
  • 润滑mdy功能

    我正在尝试转换以下内容 但对其中一个日期 1 没有成功 4 2 10 变为 0010 04 02 有办法纠正这个问题吗 谢谢 维韦克 data lt data frame initialDiagnose c 4 2 10 14 01 200
  • 如何在 bookdown 定理或示例环境中使用内联 R 代码

    我使用 bookdown 生成 html 和 PDF 文档 如何在定理和示例环境中使用内联 R 代码的结果 这是我尝试过的 title Test output bookdown pdf book toc false html documen
  • 合并行并用 group_by 和? 填充空位置

    对 R 编码非常陌生 我一直在尝试使用 dplyr 中的 group by 格式化 合并 df 中的行 然而 我还没有完全做到这一点 这是我的数据表的简化 前三个条目共享相同的 id 最后两个条目共享相同的 id ID Assay1 Ass
  • 连接极线ggplot图中的间隙

    当 ggplot 使用极坐标绘制线图时 它会在最高和最低 x 值之间留下间隙 Dec and Jan如下 而不是缠绕成螺旋状 我怎样才能继续这条线并缩小差距 特别是 我想使用月份作为 x 轴 但在一条循环线上绘制多年的数据 Reprex l
  • data.table 和 pmin 带有 na.rm=TRUE 参数

    我正在尝试使用 pmin 函数和 data table 计算行间的最小值 类似于帖子data table 中的逐行操作和更新 https stackoverflow com questions 16860200 row by row ope
  • R 脚本 - 如何在错误时继续执行代码

    我编写了一个 R 脚本 其中包含一个检索外部 Web 数据的循环 数据的格式大多数时候是相同的 但有时格式会以不可预测的方式发生变化 并且我的循环崩溃 停止运行 有没有办法不管错误如何继续执行代码 我正在寻找类似于 VBA 中的 On er
  • 如何在 Jupyter Notebook 内的 conda 环境中使用特定的 Java 版本

    我的总体目标是使用sparklyr在 Jupyter 实验室的 Azure 云服务上的 R Jupyter 笔记本中 我使用 R sparklyr 和 Java 8 创建了一个新的 conda 环境 因为这是 Sparklyr 支持的版本
  • R:连接到 Teradata 时 JDBC() 找不到 Java 驱动程序路径

    我正在尝试通过 RStudio 连接到 Teradata 但由于某种原因 JDBC 函数在识别 Java 驱动程序所在的路径时出现问题 请参阅下面的代码 library RODBC library RJDBC library rJava b
  • rpy2 传递 python 保留关键字参数

    我试图通过 python 使用 r 的密度函数 并且必须将 from to 参数传递给密度函数 然而 由于 from 这个词是Python中的保留关键字 我该如何实现这一点呢 谢谢 这是到目前为止的代码 r density robjects
  • 如何在 R闪亮中使操作不间断

    在我闪亮的应用程序中 我有一个应该不断更新自身的输出 但是每当我执行长时间运行的计算时 输出就会暂停 我的问题是 如何让输出持续不间断地运行 请参阅下面的简短演示 时钟每一秒刷新一次 但如果我单击运行 5 秒的按钮 时钟就会暂停 libra
  • 将带有日期的列转换为 R 中的行

    假设 R 中有一个如下所示的 data frame d data frame 2019q1 1 2019q2 2 2019q3 3 看起来像这样 X2019q1 X2019q2 X2019q3 1 1 2 3 我怎样才能把它变成这样 Yea

随机推荐