如何在多个多面 ggplot2 图形中实现相同的面大小和比例?

2024-02-08

我有一系列ggplot2具有恒定数量的水平面但不同数量的垂直面的图形。我想将图形保存为横向 a4 格式的 .pdf。

但是,我不知道如何才能实现相同比例的面。如果我尝试手动调整它并改变width and height对于不同数量的垂直面,图之间的比例有所不同,即,我得到不同的点大小和线宽。

本质上,如何为具有可变数量(垂直)小平面的图实现相同的小平面大小和比例?

这是一个例子:

df <- expand.grid(a = 1:2, b = 1:5, x = 1:10)
df$y <- df$x
plot <- ggplot(data = df, mapping = aes(x = x, y = y)) +
            geom_point()
plot1 <- plot + facet_grid(facets = "a ~ b")
plot2 <- plot + facet_grid(facets = ". ~ b")

ggsave(filename = "./figures/plot1.pdf", plot = plot1,
   height = 210, width = 297, units = "mm")

ggsave(filename = "./figures/plot2.pdf", plot = plot2,
   height = 210, width = 297, units = "mm")

我使用此代码将面板大小设置为绝对值,也许它在这里有帮助

set_panel_size <- function(p=NULL, g=ggplotGrob(p), file=NULL, 
                           margin = unit(1,"mm"),
                           width=unit(4, "cm"), 
                           height=unit(4, "cm")){

  panels <- grep("panel", g$layout$name)
  panel_index_w<- unique(g$layout$l[panels])
  panel_index_h<- unique(g$layout$t[panels])
  nw <- length(panel_index_w)
  nh <- length(panel_index_h)

if(getRversion() < "3.3.0"){

   # the following conversion is necessary
   # because there is no `[<-`.unit method
   # so promoting to unit.list allows standard list indexing
   g$widths <- grid:::unit.list(g$widths)
   g$heights <- grid:::unit.list(g$heights)

   g$widths[panel_index_w] <-  rep(list(width),  nw)
   g$heights[panel_index_h] <- rep(list(height), nh)

} else {

   g$widths[panel_index_w] <-  rep(width,  nw)
   g$heights[panel_index_h] <- rep(height, nh)

}

  if(!is.null(file))
    ggsave(file, g, 
           width = convertWidth(sum(g$widths) + margin, 
                                unitTo = "in", valueOnly = TRUE),
           height = convertHeight(sum(g$heights) + margin,  
                                  unitTo = "in", valueOnly = TRUE))

  invisible(g)
}

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

如何在多个多面 ggplot2 图形中实现相同的面大小和比例? 的相关文章

  • 如何在 R 中为传单中的数值变量设置不对称颜色渐变

    我想让传单调色板以零为中心 红白绿发散 我已经尝试过中所说的这个帖子 https stackoverflow com questions 29262824 r center color palette on 0 当我尝试手动创建颜色时 我得
  • 限制数据框中所有单元格的字符串长度?

    您好 有没有一种方法可以限制 data frame 中所有列的字符串文本大小 而不必循环遍历每一列并一次使用 str trunc 之类的东西 例如下面的数据框 我可以将所有文本大小限制为仅 5 个字符 而不必一次只执行一列吗 如果有 50
  • R 中的发散积分可在 Wolfram 中求解

    我知道我以前问过同样的问题 但由于我是新来的 这个问题问得不好而且不可重现 因此我在这里尝试做得更好 如果我只编辑旧的 可能没有人会读它 我有一个想要积分的二重积分 ff lt function g t exp 16 g exp 8 t t
  • 错误:“rjags”的包或命名空间加载失败

    在终端的 conda 环境之一中 我能够成功安装包 rjags 但是 当我在该环境中运行 R 并运行库 rjags 时 出现以下错误 加载所需的包 coda 错误 rjags 的包或命名空间加载失败 rjags 的 loadNamespac
  • 在另一个 Rmd 中运行选定的块

    我已经在源 Rmd 文件中运行了分析 并且希望仅使用few来自源的块 我已经看到了一些关于从源 Rmd 中提取所有块的答案来自另一个 Rmd 中的 Rmd 文件的源代码 https stackoverflow com questions 4
  • 将 sf voronoi 多边形裁剪到边界框时出错

    我正在尝试将 voronoi polygons 使用 sf package 创建 剪辑 到边界框 但它引发了我无法定义的错误 我对 R 的空间世界不太有经验 感谢所有帮助 样本数据 stations lt structure list ST
  • 根据另一列中的键累积一列中的值时出现问题

    我有一个看起来像这样的数据框 我需要使用 PROJ ID 列中的字符串创建一个新的值列 并形成 PROJ NAME 列中的值字符串 这里提供的解决方案 根据 r 中另一列的键累积一列中的值 https stackoverflow com q
  • 带 R 的多彩标题

    我想添加颜色某些词在我的图表标题中 我已经能够在这里找到一些先例 http blog revolutionanalytics com 2009 01 multicolor text in r html 具体来说 我希望用撇号括起来的文本 在
  • 如何计算嵌套函数中的粘合表达式?

    我正在尝试嵌套一个函数 该函数将两个字符串粘合在一起 该函数使用组合字符串来命名数据帧的列 然而 问题似乎是粘合表达式没有足够早地评估为字符串 我可以 并且应该 强制在将表达式作为参数传递给另一个函数之前对其进行求值吗 library ti
  • 如何在R中同时对三个字段进行网络分析

    如何在 R 中同时对三个字段进行网络分析 下面是示例数据以及desired output在最后一栏中 df lt data frame stringsAsFactors FALSE id 1 c ABC ABC BCD CDE DEF EF
  • 如何匹配 R 中的所有匹配项?

    我有 1000 个名字的列表 说A 我还有另外 5 个名字的清单 说B 我想找出这5个名字出现在1000个号码列表中的第几行 例如 Amy 在 A 中可以出现 25 次 B 里有艾米 我想知道 Amy 出现在 A 中的哪些行 我以前使用过
  • ggplot2、R 中的单条形条形图

    我有以下数据和代码 gt ddf var1 var2 1 aa 73 2 bb 18 3 cc 9 gt gt dput ddf structure list var1 c aa bb cc var2 c 73L 18L 9L Names
  • 具有 dplyr、tidyverse 和 broom 的相关矩阵 - P 值矩阵

    全部 我想使用以下方法从相关矩阵中获取 p 值dplyr 和 或扫帚包 并同时测试多个变量 我知道其他方法 但 dplyr 对我来说似乎更简单 更直观 此外 dplyr 需要关联每个变量以获得特定的 p 值 这使得该过程更容易 更快 我检查
  • R 中的 Websocket

    我设法在 R 中建立到 Mtgox websocket 的连接 规格如下 url https socketio mtgox com mtgox Currency USD https socketio mtgox com mtgox Curr
  • GGPLOT2:如何在 ggplot() 脚本中绘制特定选择

    这是一个名为的大型数据集的峰值P 其中有 10 个优惠 CS 有不同的商店 SHP 具有多个数值 数据集列出了按周排序的它们 WK 2 tm 52 它创建一个大文件 仅前 6 行出现峰值 WK MND CS SHP RevCY RevLY
  • 如何从shiny中将数据下载到多张纸上?

    我们如何将数据从 Shiny 下载到多个工作表并命名每个工作表 例如下面 ginberg将mtcars数据保存在sheet1中 我们可以将头部 mtcars 保存在sheet2中吗 另外 我们可以对这些工作表进行不同的命名吗 例如sheet
  • 检查单词是否存在于英语词典 r 中

    我正在对多个进行一些文本分析resume生成一个wordcloud using wordcloud包装连同tm用于在 R 中预处理文档语料库的包 我面临的问题是 检查语料库中的单词是否具有某种含义 即 它属于英语词典 如何一起挖掘 处理多份
  • R - Quantstart:多种股票的测试策略

    我正在使用一些指标构建基本交易策略 我的问题是我希望它在多个股票上运行 而不必指定我想要测试的每个单独的股票 目前我可以使用向量一次获取多个符号 如下所示 Get Shares from Yahoo Finance Stocks lt AS
  • ggplot2 可视化/显示中的地图错误?

    正如您在下面看到的 我使用 ggplots 制作的地图上存在一个奇怪的显示问题 任何投影似乎都会发生同样的问题 这是代码 仅包maps and ggplot2需要 mapWorld lt borders world colour gray5
  • 使用 purrr、broom 从许多单变量模型中获得整洁的输出

    我有一个由二进制结果列组成的数据框 y 和多个独立的预测列 x1 x2 x3 我想运行许多单变量逻辑回归模型 例如y x1 y x2 y x3 并将每个模型的指数系数 比值比 95 置信区间和 p 值提取到数据框 标题的行中 在我看来 使用

随机推荐

  • 如何防止Coldfusion将cfform.js注入head部分?

    HTML 模板将传递到 Coldfusion 模板的 head 标签有附加属性 问题是 当基于此模板生成输出时 Coldfusion 会将其脚本注入 head 标签内 profile http abc com gt 这导致profile h
  • Valgrind 的令人困惑的输出显示间接丢失的内存泄漏,但没有明确丢失或可能丢失

    我在 macos x 10 8 上运行 valgrind Valgrind 在启动时说 11312 WARNING Support on MacOS 10 8 is experimental and mostly broken 11312
  • MySQLNumberTypeMapping'不支持值转换

    我添加了一些用于连接到 SQL 数据库的模型 现在正在移植到 MySQL 当我运行时出现此错误 dotnet ef update context context 块引用 System NotImplementedException MySQ
  • 在 Laravel 中的路由文件处理之前是否可以修改请求?

    是否可以在路由文件处理之前修改请求 基本上我想要构建的应用程序将有数百个 slug URL 但这些段头会导致不同的控制器 为了实现这一点 我将在 redis 中保留键 值对 例如 slug domain com slug one Would
  • GIT:如何压缩已推送到远程存储库的多个提交?

    我对 Git 有一个奇怪的设置 基本上我有 client 1 lt gt remote repo gt client 2 客户端 1 本质上是我正在使用的本地存储库 因为我无法在本地计算机上编译 构建该项目 客户端2 是用于构建的远程服务器
  • 每秒将变量增加 X [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我被困在代码的这一部分 我想要一个
  • 获取adb shell命令的结果代码

    我应该如何得到 of adb shell
  • Redis 支持的 ASP.NET SessionState 提供程序 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • C# regex 查找并替换重用部分匹配文本

    我需要对长文本字符串进行搜索和替换 我想找到如下所示的所有损坏链接的实例 a href http any url here 7BlocalLink 1369 7D 7C 7CThank 20you 20for 20registering b
  • 如何从 Java 调用 scala 的 Option 构造函数

    我正在开发一个混合 java scala 项目 并且尝试从 Java 调用 scala 对象的方法 该方法需要一个Option Double 作为参数 我认为这会起作用 Double doubleValue new Double 1 0 s
  • Clojure STM 歧义因子

    在 Clojure 中 我们使用 STM 来实现并发 我的问题是STM使用数据的时间点值 这是否会带来歧义 我们如何知道访问了什么值 Clojure 中的 STM 提供 通过ref http clojure org refss and do
  • 命名空间中所需的 WSDL 扩展元素“绑定”

    我的网络服务遇到了很大的问题 当我尝试通过 svcutil 生成文件时 收到以下错误消息 Attempting to download metadata from http srv 13208 GROUPING WS ASMX as mx
  • VS Web Essentials 2012 在导入保存时编译主 LESS

    我正在尝试维护一个全局 less 文件 该文件 imports 应用程序的其余 less 文件 我目前正在 Visual Studio 2012 中使用 Web Essentials 扩展开发这个项目 该扩展在保存时自动生成 css 文件
  • pip:升级包而不升级特定依赖

    我的问题非常类似于this https stackoverflow com questions 2861183 pip upgrade package without upgrading dependencies问题 但它的不同之处在于 如
  • 如何从 SQL 编写存储过程脚本

    我知道有一种方法可以做到这一点 因为我已经见过它了 我只是不记得怎么做了 我想运行一个 SQL 命令 该命令将返回脚本以创建存储过程作为结果 我怎样才能做到这一点 尝试使用 sp helptext 命令 sp helptext yourpr
  • [UICollectionView setCollectionViewLayout:animated:] 访问错误

    我的 UICollectionView 发生了奇怪的崩溃 崩溃的 UICollectionView 嵌入到另一个 UICollectionView 的 UICollectionView 单元格中 我无法重现这个问题 如果内部 UIColle
  • 在 docker 容器中运行 emacs

    我使用的是 Mac 想在我的 docker 容器中运行 emacs 有解决这个问题的首选方法吗 在我的流程中 我陷入困境 因为未设置显示 术语 gt docker exec it c6a7a76db84c bash gt sudo apt
  • 测试php字符串是否为整数

    post用于模拟 POST 我发现 POST int 是一个字符串 我怎样才能知道是否 post int 是一个整数 下面表明它不是整数 编辑 根据文档 http php net manual en function is int php
  • 如何覆盖 gem 依赖?

    我有 2 个 gem 它们依赖于冲突版本的 hashie 一个需要 gt 1 2 0 另一个需要 3 3 1 Bundler could not find compatible versions for gem hashie In Gemf
  • 如何在多个多面 ggplot2 图形中实现相同的面大小和比例?

    我有一系列ggplot2具有恒定数量的水平面但不同数量的垂直面的图形 我想将图形保存为横向 a4 格式的 pdf 但是 我不知道如何才能实现相同比例的面 如果我尝试手动调整它并改变width and height对于不同数量的垂直面 图之间