使用coord_equal()时,使用cowplot::plot_grid()垂直对齐不同高度的图

2023-11-29

我正在尝试使用组合两个 ggplot 对象cowplot::plot_grid()并垂直对齐它们。这通常非常简单,使用align = "v".

dat1 <- data.frame(x = rep(1:10, 2), y = 1:20)
dat2 <- data.frame(x = 1:10, y = 1:10)
plot1 <- ggplot(dat1, aes(x = x, y = y)) + geom_point()
plot2 <- ggplot(dat2, aes(x = x, y = y)) + geom_point()
cowplot::plot_grid(plot1, plot2, ncol = 1, align = "v")

image 1

然而,当 ggplots 使用时,这种方法会失败coord_equal()因为plot_grid()当强制纵横比时无法修改轴。相反,默认设置是保持每个图的高度相同。

plot1 <- ggplot(dat1, aes(x = x, y = y)) + geom_point() + coord_equal()
plot2 <- ggplot(dat2, aes(x = x, y = y)) + geom_point() + coord_equal()
cowplot::plot_grid(plot1, plot2, ncol = 1, align = "v")

image 2

我可以通过玩并获得rel_heights论点恰到好处,但这不是一个可行的解决方案,因为我有许多动态图要构建。这里,y 轴对齐,并且所有轴的坐标仍然相等。

cowplot::plot_grid(plot1, plot2, ncol = 1, align = "v", rel_heights = c(2, 1.07))

image 3

我见过很多解决类似问题的方法ggplot2::ggplotGrob() and grid::grid_draw(),但是当coord_equal()用来。也许最好的解决方案不使用cowplot::plot_grid()根本没有,或者解决方案可能是以某种方式动态确定并将正确的值传递给rel_heights。我想我更喜欢后者,以便能够轻松使用附带的其他功能cowplot::plot_grid()。也许可以找到一些有用的灵感这个相关的方法.


作者cowplot::plot_grid()这里。当您尝试将绘图与使用时生成的指定纵横比对齐时,它不起作用coord_equal()。解决方案是使用egg库或patchwork库。 Patchwork 仍在开发中,但应该很快就会发布到 CRAN。同时,您可以从github安装。

这是使用鸡蛋的解决方案。在我看来,它工作得很好。

library(ggplot2)
library(egg)

dat1 <- data.frame(x = rep(1:10, 2), y = 1:20)
dat2 <- data.frame(x = 1:10, y = 1:10)
plot1 <- ggplot(dat1, aes(x = x, y = y)) + geom_point() + coord_equal()
plot2 <- ggplot(dat2, aes(x = x, y = y)) + geom_point() + coord_equal()
ggarrange(plot1, plot2, ncol = 1)

enter image description here

我看到的两个小问题是(1)两个 y 轴的轴刻度不同,这使得间距看起来不同,(2)轴扩展到不同的限制。您可以通过手动设置刻度和扩展来解决这两个问题。

plot1 <- ggplot(dat1, aes(x = x, y = y)) + geom_point() + 
  scale_y_continuous(limits = c(0, 21), breaks = 5*(0:4), expand = c(0, 0)) +
  coord_equal()
plot2 <- ggplot(dat2, aes(x = x, y = y)) + geom_point() + 
  scale_y_continuous(limits = c(0, 11), breaks = 5*(0:4), expand = c(0, 0)) +
  coord_equal()
ggarrange(plot1, plot2, ncol = 1)

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用coord_equal()时,使用cowplot::plot_grid()垂直对齐不同高度的图 的相关文章

  • 将数据框中的每个 x 个字符拆分为字符串

    我知道这里有一些关于每隔一段时间分割一个字符串的答案nth字符 例如this one https stackoverflow com questions 23208490 split each character in r and this
  • 如何使用 usmap 标记数字而不是名称?

    我知道 usmap 有一个选项label in plot usmap 我想标记一些数字 而不是状态名称 我想 usmap 中应该有与州质心坐标相关的数据 但我不知道如何找到它 如果我能得到 坐标然后我可以用它来标记数字geom text 这
  • Dendextend:关于如何根据定义的组为树状图的标签着色

    我正在尝试使用一个名为 dendextend 的很棒的 R 包来绘制树状图并根据一组先前定义的组为其分支和标签着色 我已阅读您在 Stack Overflow 中的答案以及 dendextend vignette 的常见问题解答 但我仍然不
  • pyomo + 网状错误 6 句柄无效

    我正在尝试运行pyomo优化 我收到错误消息 Error 6 The handle is invalid 不知道如何解释它 环顾四周似乎与特权有关 但我不太明白 在下面找到完整的错误跟踪以及重现它的玩具示例 完整的错误跟踪 py run f
  • 从命令行运行 R 代码 (Windows)

    我在名为 analysis r 的文件中有一些 R 代码 我希望能够从命令行 CMD 运行该文件中的代码 而无需通过 R 终端 并且我还希望能够传递参数并在我的代码中使用这些参数 例如就像下面的伪代码 C gt execute r scri
  • 将每列的值乘以 R 中另一个 data.frame 中的权重

    我有两个data frames df and weights 代码如下 df看起来像这样 id a b d EE f 1 this 0 23421153 0 02324956 0 5457353 0 73068586 0 5642554 2
  • 将阴影区域添加到五分位数之间的直方图中

    All 我有一个包含 2 个直方图的图表 其中我还绘制了代表第 20 40 60 和 80 个百分位数的线条 下面的代码使用虚拟数据重现了类似的图表 data lt rbind data frame x rnorm 1000 0 1 g o
  • 更改闪亮 R 中的默认浏览器

    我在 RStudio 中使用 01 hello 虽然在 IE 中默认打开程序时它不会显示直方图 但即使在 Chrome 中 滑块也不起作用 我无法滑动条形图并看到直方图中的变化 如何更改 R 中的默认浏览器 以便闪亮启动 Chrome 而不
  • 在 r 中的 group_by 之后建模后取消列表列的嵌套

    我想对所有组进行线性回归group by 将模型系数保存在列表列中 然后使用 unnest 扩展列表列 这里我用的是mtcars以数据集为例 注 我想用do here becausebroom tidy 不适用于所有型号 mtcars gt
  • 在 Rcpp 中使用其他包中的 C 函数

    我试图从 C 函数中的 cubature 包调用 C 例程来执行多维积分 我试图重现的基本 R 示例是 library cubature integrand lt function x sin x adaptIntegrate integr
  • 为什么 R 更新后 sim_slopes() 中会出现此错误?

    我正在尝试使用 交互 包来创建简单斜率的约翰逊 尼曼图 但是 当尝试运行 sim slopes 函数时 出现以下错误 直到我将R更新到4 2 2 我才没有遇到这个问题 我使用的是 macOS Ventura 13 1 Error class
  • 如何从 R 中的 txt 文件读取矩阵?

    我有一个带有矩阵的txt文件 Matrix txt 重要 数字之间没有空格 0100 1001 1100 我想在 R 中将其作为矩阵读取 我该怎么做 我尝试使用 as matrix read table Matrix txt sep 但失败
  • 纵向比较 R 中的值...并进行扭转

    我有许多人在多达四个时间段进行的测试结果 这是一个示例 dat lt structure list Participant ID c A A A A B B B B C C C C phase structure c 1L 2L 3L 4L
  • read_html(url) 和 read_html(content(GET(url), "text")) 之间的区别

    我正在看这个很棒的答案 https stackoverflow com a 58211397 3502164 https stackoverflow com a 58211397 3502164 解决方案的开头包括 library httr
  • 使用 template.docx 从 Shiny App 编织 Word 文档

    我正在尝试使用 template docx 文件从闪亮的应用程序编写一个 Word 文档 我收到以下错误消息 pandoc exe template docx openBinaryFile 不存在 没有这样的文件或目录 以下 3 个文件当前
  • 任意列中包含字符串的子集行

    我有一个如下所示的数据集 Col1 Col2 Col3 abckel NA 7 jdmelw njabc NA 8 jdken jdne 如何对数据集进行子集化 使其仅保留包含字符串 abc 的行 最终预期输出 Col1 Col2 Col3
  • 闭包作为数据合并习惯的解决方案

    我正在尝试解决闭包问题 而且我think我发现了一个案例 他们可能会有所帮助 我有以下几部分需要处理 一组正则表达式 旨在清理状态名称 位于函数中 具有州名称 上述函数创建的标准化形式 和州 ID 代码的 data frame 用于链接两者
  • 如何绘制具有显着性水平的箱线图?

    前段时间问了一个关于绘制箱线图的问题Link1 https stackoverflow com questions 14604439 plot multiple boxplot in one graph 我有一些包含 3 个不同组 或标签
  • 无法更改 RStudio 中的 R 版本

    我的 RStudio V 0 99 491 无法更改 R 版本 我以平常的方式行事Global Options gt R Version 然后它挂起并且不再工作或反应 R 运行良好的初始版本是R 3 1 0 我以前从未遇到过这样的问题 也许
  • 如何使用 dplyr 独立过滤每列的行

    我有以下内容 library tidyverse df lt tibble tribble gene colB colC a 1 2 b 2 3 c 3 4 d 1 1 df gt A tibble 4 x 3 gt gene colB c

随机推荐

  • 如何删除UIWebView的所有cookie?

    在我的应用程序中 我有一个UIWebview加载用于登录的 linkedin 身份验证页面 当用户登录时 cookie 会保存到应用程序中 我的应用程序有一个与 linkedin 登录无关的注销按钮 因此 当用户单击此按钮时 他将从应用程序
  • 使用struts 2和hibernate在jsp页面中显示Blob(图像)

    我设法将图像作为 Blob 存储在我的 mysql 数据库中 我也在使用休眠 现在我正在尝试加载该图像并将其发送到 jsp 页面上 以便用户可以查看该图像 这是我的 struts 2 动作类 import java io File impo
  • 如何捕捉父控件调整大小的时刻?

    我有一个源自 TWinControl 的可视化组件 当组件的父控件大小调整后 我需要在组件中做一些工作 一般情况下 我的组件的 对齐 属性是 alNone 如何捕获父控件调整大小的事件 是否可以 如果 TWinControl 父级 的大小发
  • 是否可以使用 Autodesk.AutoCAD.Interop 在 AutoCAD 中编辑块属性?

    我开发了一个外部 WPF 应用程序来用 C 生成绘图 我已经能够使用 Autodesk AutoCAD Interop 绘制 标注尺寸 添加块以及应用程序所需的所有其他内容 但是我似乎无法填充标题栏或生成零件列表 我见过的所有示例都基于要求
  • prometheus relabel_config 删除操作不起作用

    我一直在尝试删除未使用的指标 在抓取之前 以减轻 Prometheus 集群上的负载relabel configs job name nginx ingress controller metrics kubernetes sd config
  • 表不是由 Hibernate 创建的

    我注释了一堆 POJO 以便 JPA 可以使用它们在 Hibernate 中创建表 看起来除了一个名为 Revision 的非常核心的表之外 所有表都已创建 Revision 类有一个 Entity name RevisionT 注解 因此
  • python3 cvxopt.matrix 和 numpy.array 之间的转换

    蟒蛇 蟒蛇3 2 CVXOPT 1 1 5 numpy 1 6 1 I read http abel ee ucla edu cvxopt examples tutorial numpy html import cvxopt import
  • 计算两个日期之间的工作日数

    我正在尝试获取 plpgsql 中两个日期之间的工作日数 以下是我的代码 CREATE FUNCTION weekdays DATE DATE RETURNS INTEGER AS DECLARE d date 1 weekdays int
  • Google GeoCoding API - 返回 ZERO_RESULTS 但位置显示在 Google 地图上

    我正在使用 Google GeoCode API 从地址搜索位置并获取该位置的 LAT LON 信息 从API我总是得到ZERO RESULTS就好像我从谷歌地图中搜索地址一样 它会显示位置 我搜索的地址是 5989 Route 6N Ed
  • 如何证明 Coq 中的两个 Fibonacci 实现相等?

    我有两个斐波那契实现 如下所示 我想证明它们在功能上是等效的 我已经证明了自然数的性质 但是这个练习需要另一种我无法弄清楚的方法 我使用的教科书介绍了 Coq 的以下语法 因此应该可以使用这种表示法来证明相等性
  • Grand Central Dispatch 中线程限制的解决方法?

    With 大中央快讯 可以轻松地在非主线程上执行耗时的任务 避免阻塞主线程并保持 UI 响应 只需使用dispatch async并在全局并发队列上执行任务 dispatch async dispatch get global queue
  • VBA计算图表对象中的系列数

    我知道这看起来很简单 但似乎对我不起作用 我在 Sheet1 上有一个图表 这是该表上唯一的图表 我想获取图表中的系列数 所以我用 Debug Print ThisWorkbook Sheets Sheet1 ChartObjects 1
  • 使用非 root 用户时出现 ffmpeg 错误

    我已经安装了 ffmpeg 如果您是 root 或使用 sudo 它可以完美工作 但在尝试作为非 root 用户使用它时会出错 我在测试 VPS 上执行了相同的安装 安装没有问题 因此它似乎与此 cPanel 服务器隔离 我无法确定原因 非
  • 如何为Python编译C扩展,其中C函数使用LAPACK库?

    我为 Python 编写了一个 C 扩展 并且该模块已成功编译在 so 文件中 但是 当我尝试在 Python 端使用包装的 C 函数 Python 中调用包装的 C 函数的测试代码 时 我得到以下信息ImportError ImportE
  • 如何在android回收站视图中放置Admob本机高级广告?

    我想将 admob 原生高级广告放置在 Android 应用程序中回收器视图的每 3 个位置 我想要 Admob 提供的模板 https github com googleads googleads mobile android nativ
  • 透明图像中的javafx鼠标事件

    如果您单击或拖动透明像素 JavaFx ImageView 不会触发鼠标事件 例如按下或拖动 是否有办法解决此问题并检测来自透明区域的鼠标事件 I have this image that i added into this very si
  • 我应该如何从 Selenium Java WebDriver 与 Flash 进行最佳交互

    我知道有很多类似的问题 例如 使用 WebDriver 交互 Flash 元素 过去曾被问到 但目前尚不清楚如何最好地与与 Selenium 的 Java WebDriver 相关的页面上的 Flash 元素进行交互 默认情况下 我知道它不
  • Java MySQL 准备语句批处理

    我正在尝试使用准备好的语句批处理 但遇到问题 以下代码不会给我错误 但它仅在表中插入地图的最后一个键 我不知道为什么 这肯定是一个非常愚蠢的错误 但这是我第一次使用 addBatch 方法 Class forName com mysql j
  • 使用 ScreenCapture.CaptureScreenshot 捕获并保存屏幕截图

    我一直在尝试截取屏幕截图 然后立即使用它来显示某种预览 有时它有效 有时则无效 我目前不在工作 而且我没有统一这台计算机 所以我将尝试即时重新创建它 这里和那里可能存在一些语法错误 public GameObject screenshotP
  • 使用coord_equal()时,使用cowplot::plot_grid()垂直对齐不同高度的图

    我正在尝试使用组合两个 ggplot 对象cowplot plot grid 并垂直对齐它们 这通常非常简单 使用align v dat1 lt data frame x rep 1 10 2 y 1 20 dat2 lt data fra