获取ggplot2中绘图区域的宽度

2024-01-10

有没有办法获得网格窗口中绘图区域的宽度?例如,如果plot.margin更改或 y 轴标签的字体大小增加。是隐藏在某处str(p)?

任何尺寸的测量都可以。我需要能够测量不同场景下绘图区域宽度的相对变化,例如 y 轴标签字体大小的变化。

df = data.frame(x = (1:3),One=c(12, 8, 13),Two=c(13, 7, 11),Three=c(11, 9, 11))
df.melt = melt(df, id.vars="x")

p = ggplot(df.melt, aes(x=x, y=value, color=variable)) + 
  geom_line() +
  coord_cartesian(xlim=c(min(df.melt$x),max(df.melt$x))) +
  theme(legend.position="none", plot.margin = unit(c(1, 4, 1, 1), "cm")) 
p

更新 - 澄清:请帮我计算a/b.

p = ggplot(df.melt, aes(x=x, y=value, color=variable)) + 
  geom_line() + coord_cartesian(xlim=c(min(df.melt$x),max(df.melt$x))) +
  theme(legend.position="none")

p1 = p + theme(plot.margin=unit(c(1,1,1,1),"cm"), axis.text.y=element_text(size=10))
p2 = p + theme(plot.margin=unit(c(1,1,1,2),"cm"), axis.text.y=element_text(size=30))
grid.arrange(p1, p2, ncol=2)

ggplot2 中的绘图使用网格图形。已生成的图形场景 使用网格图形包由 grobs 和 viewport 组成。

您可以使用网格调试用于检查颗粒的包装。

  1. showGrob 显示用于绘制场景的 glob 的位置和名称

          showGrob()
    
  2. 获取grob的gpath

      sceneListing <- grid.ls(viewports=T, print=FALSE)
      do.call("cbind", sceneListing)
    
       name                                gPath                                                      
    [1,] "ROOT"                              ""                                                         
    [2,] "GRID.gTableParent.45019"           ""                                                         
    [3,] "background.1-5-6-1"                "GRID.gTableParent.45019"                                  
    [4,] "spacer.4-3-4-3"                    "GRID.gTableParent.45019"                                  
    [5,] "panel.3-4-3-4"                     "GRID.gTableParent.45019"                                  
    [6,] "grill.gTree.44997"                 "GRID.gTableParent.45019::panel.3-4-3-4"                   
    
  3. 找回戈尔布

    h <- grid.get(gPath="GRID.gTableParent.45019")
    
  4. 获取 h 属性(例如)

    h$layoutvp$width
    

应用:

grid.get('x',grep=TRUE,global=T)
(polyline[panel.grid.minor.x.polyline.21899], polyline[panel.grid.major.x.polyline.21903], gTableChild[axis-l.3-3-3-3], gTableChild[axis-b.4-4-4-4], gTableChild[xlab.5-4-5-4]) 
>  grid.get('x',grep=TRUE,global=T)[[3]]
gTableChild[axis-l.3-3-3-3] 
>  xx <- grid.get('x',grep=TRUE,global=T)[[3]]
> grobWidth(xx)
[1] sum(1grobwidth, 0.15cm+0.1cm)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取ggplot2中绘图区域的宽度 的相关文章

  • 使用服务器中的 Shiny Reactive 作为 UI 输入

    我正在努力使用反应函数的结果作为 UI 的输入 目前 我主要使用 renderUI 随着应用程序变得更加复杂 它会降低性能 Using DetailsList items filtered Accounts columns columns
  • 在 dplyr 中,setdiff 和 anti_join 之间的本质区别是什么?

    我仍在学习 DataCamp for R 的课程 所以如果这个问题看起来很幼稚 请原谅我 考虑以下 非常做作的 示例 library dplyr library tibble type lt c Dog Cat Cat Cat name l
  • 如何在 R 中的多图形环境中画一条线?

    举一个非常简单的例子 mfrow c 1 3 每个图都是不同的直方图 我将如何画一条水平线 类似于abline h 10 所经过的all3位数 也就是说 甚至是它们之间的边距 显然 我可以为每个图形添加一条 abline 但这不是我想要的
  • data.table:j中的匿名函数

    我试图让匿名函数返回多列j的论证data table 这是一个例子 sample data tmpdt lt data table a c rep a 5 rep b 5 b c rep f 3 rep r 7 c 1 10 d 21 30
  • 如何在 nlme 与 lme4 中指定不同的随机效应?

    我想使用指定模型中的不同随机效应nlme lme 数据在底部 随机效应是 1 intercept and position变化超过subject 2 intercept变化超过comparison 这很简单 使用lme4 lmer lmer
  • 如何与 R 包 sf 进行“完整”联合

    我尝试使用三个多边形之间的并集sf st union 下图中显示了 ArcGIS Overlay Union All 的结果 我希望通过使用 R 中的 sf 包获得与 OUTPUT 中五个不同多边形类似的结果 library sf a1 l
  • 读取r中不同目录中的多个文件[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想从不同的目录读取多个 csv 文件 然后将其放入单个数据框中 我有两种目录可供阅读 A LogIIS 文件夹01 文件 csv 在
  • ValueError:在 R 中使用 keras 模型时在用户代码中

    我正在尝试使用 R 在 R 中运行一维 CNNkeras包裹 我正在使用以下代码 library MASS library keras Create some data data Boston data lt Boston create a
  • R 中的约束优化

    我正在尝试使用http rss acs unt edu Rdoc library stats html constrOptim html http rss acs unt edu Rdoc library stats html constr
  • gridExtra 2.0.0 更改标题大小

    我知道 gridExtra 已更新 因此 我想知道如何更改标题大小 这不再有效 grid arrange a b c d ncol 2 nrow 2 main textGrob Title gp gpar fontsize 15 font
  • R 中的插补 MICE 仍不存在于数据集中

    运行 MICE 包后 5 个完整插补集中的缺失值数量从 147428 减少到 46093 但不是应该是 0 NA 吗 Thanks 这是我的 MICR 代码 imp mice newdata imputationSet1 complete
  • 当我创建新变量时出了什么问题?

    我想根据原始变量施加的条件创建一个新变量 比方说 原始变量 var 是由 1 20 中的随机样本组成的向量 并且 当原来的 var 大于10时 新变量 newvar 被设置为缺失 当 var 小于10时 新变量 newvar 被设置为等于
  • 保存 d3heatmap 生成的热图

    我正在尝试保存由d3heatmap https github com rstudio d3heatmap转换为 pdf 文件 但文件总是损坏 library d3heatmap pdf file heat pdf d3heatmap mtc
  • 如何在Shiny中引用ui.R中的反应元素

    我正在使用 ShinyDND 包制作一个具有拖放功能的应用程序 我想将输入中的列表作为 DragSetUI 的参数传递 该函数需要在 ui R 中运行 我尝试了renderUI和uiOutput 它几乎可以工作 但是拖动的元素无法放置在放置
  • 无法安装bigrf包

    我在安装 bigrf R 软件包时遇到了一些极其令人沮丧的困难 我已经尝试过以下方法 install packages bigrf repo https github com aloysius lim bigrf git type sour
  • 使用 google 查询邮政编码距离

    我有两个邮政编码列表 R 语言 其中一个是孩子的地址及其学业成绩 另一个是学校的地址 我希望能够为每个孩子找到最近的学校 所以大概需要通过转换为长和纬度值来计算邮政编码之间的距离 然后我希望能够在谷歌地图上绘制每所学校的所有孩子 并看看住在
  • 如何使用Shiny中的下载按钮?

    我想下载一个csv使用 Shiny 中的下载按钮下载文件 该文件将使用辅助 r 脚本中的参数创建 SERVER output downloadData lt downloadHandler filename function paste d
  • 查找表中第三个四分位数以上的频率

    我有一个大数据框架 对 57 个变量的超过 239k 观察值 其中包含一些疾病描述以及针对不同年龄段的人针对这些疾病使用的药物 我想在每种疾病描述的使用频率前四分之一中找到这些药物 为了制作一个可重现的示例 我创建了一个包含 1000 个观
  • 使用 kableExtra 增加行/行间距

    有没有办法在 r markdown 或 bookdown 中使用 kableExtra 增加 pdf 输出的行间距 library knitr library kableExtra kable head iris 5 caption Iri
  • 使用“kde”函数进行 R 中的 5-D 核密度估计

    我想通过使用 R 的 ks 库中的 kde 函数来执行 5 维数据 x y z 时间 大小 的核密度估计 在它的手册中 它说它可以执行核密度估计1 至 6 维数据 手册第 24 页 http cran r project org web p

随机推荐

  • 如何使用php访问Oracle APEX的数据库?

    我刚刚发现PHP and APEX互相对比 我想做的是操纵Oracle数据库使用PHP代替APEX 我想要这样做的主要原因是免费使用 Oracle 数据库 作为初学者 您可能会发现这很有用 http php net manual en fu
  • 相对布局忽略 setMargin()

    我正在尝试嵌套一个RelativeLayout里面的一个LinearLayout 并给出RelativeLayout将其边缘与边缘的边缘隔开的边距LinearLayout 到目前为止我有这个 LayoutInflater from cont
  • VueJS - Vue 未定义

    我挑战自己编写一个应用程序 从 API 获取数据并将其显示在各种组件中 我对 VueJS 还很陌生 我使用 VueResource 来访问 API 使用 VueX 来进行状态管理 我已经设置了我的商店 我添加了操作 突变和吸气剂等 一旦我添
  • Visual Studio 2015 解决方案向后兼容 Visual Studio 2013

    看来我可以在 VS 2015 中打开 VS 2013 解决方案文件 我有几个关于向后兼容性的问题 能否在 VS 2015 中安全地维护 VS 2013 解决方案 而不会失去在 VS 2013 中处理该解决方案的能力 VS 2015 解决方案
  • iOS:注册令牌无效。检查令牌格式

    我是 Firebase 和 iOS 的新手 我正在尝试使用 FCM 发送推送通知 我在 FCM 上注册了一个 iOS 应用程序 两个都 p12添加了证书 根据FCM开发的代码 通过发送通知时Firebase 控制台 https fireba
  • Kindle SDK 语言/平台

    有谁知道新的语言 平台是什么会支持吗 Kindle 开发工具包 KDK 基于 Java 来自FAQ https kindlepublishing amazon com gp vendor kindlepubs kdk get content
  • 如何克隆对象

    当我执行以下操作时 对人 b 所做的任何操作都会修改人 a 我认为这样做会从人 a 克隆人 b 我也不知道链接后更改人员 a 是否会更改人员 b 由于我现在的代码 我只能在 1 个方向看到这一点 Person a new Person he
  • Excel (Office 365) 在执行 UDF 时自动重新启动

    在此先感谢您的帮助 我不确定 UDF 中的问题出在哪里 但执行程序后 Excel 自动重新启动 并且还显示 MsxBox 两次和参考值 Public queryString As String Public Function SetIt R
  • RSA 解密 C# (.NET 3.5) 中的数据,该数据在 php 5.3.2 中使用 openssl 加密

    也许有人可以澄清我 我已经在这上面冲浪有一段时间了 步骤 1 创建根证书 Key generation on unix 1 openssl req x509 nodes days 3650 newkey rsa 1024 keyout pr
  • 在没有 XML 的 Spring 4 中使用 EhCache

    有没有一种方法可以在 Spring 4 中或使用 Spring Boot 中不使用 xml 来初始化 EhCache 我注意到 Spring Boot 1 0 0 RC3 没有任何 ehcache 依赖项 但是Spring 4 0GA 发布
  • 在 AWS S3 中创建对象的新版本是最终一致还是写后读一致?

    我从 Amazon 的文档中看到 将新对象写入 S3 是写后读一致的 但更新和删除操作最终是一致的 我猜想推动新版本打开版本控制的对象最终会像更新一样保持一致 但我找不到任何文档来确认 有人知道吗 编辑 我的问题是关于指定或不指定显式版本的
  • 返回对象数组(来自对象数组)

    我有以下数据 我想返回一个 对象 数组years是不同的 我尝试了以下函数 但我得到了数组中的数组 const data id 1 name test1 years id 1 name year1 id 2 name year2 id 2
  • 使用回调分配 React ref 与直接设置它之间的区别?

    它的工作原理和行为相同 但想知道直接设置 ref 与通过以元素作为参数的回调设置它是否有任何实际差异 给定这个反应钩子组件 const myComponent props gt const myRef React useRef null r
  • 使用数据虚拟化,将ViewModel中的某个属性与View中ItemsControl的SelectedItem绑定的问题

    关于 WPF 中的数据虚拟化WPF 数据虚拟化 http www codeproject com KB WPF WpfDataVirtualization aspx是一篇好文章 使用此功能 数据虚拟化在我的代码中执行得很好 但存在一个问题
  • Flink 仪表板版本 1.3.2 中无法执行 CEP 模式,这是由 ClassNotFoundException 引起的

    我写了一个像这样的简单模式 Pattern
  • “未选择要还原的备份集”SQL Server 2012

    我有一个启用了文件流的 SQL Server 2012 数据库 但是 当我备份它并尝试在另一个 SQL Server 2012 实例 另一台计算机上 上恢复它时 我只是收到以下消息 没有选择要恢复的备份集 甚至没有一行更多的解释 这是怎么回
  • xamarin.ios 中的 UITabBarController 不使用 StoryBoard

    继续我的问题这个帖子 https stackoverflow com questions 47159814 adding uitabbarcontroller and have no navigationcontroller 4716097
  • 声纳抱怨局部变量的无用分配

    我的程序中有以下代码 在与 Maven 集成后 我正在运行 SonarQube 5 对其进行代码质量检查 然而 声纳要求删除对局部变量 session 的无用分配 RequestMapping value logoff method Req
  • numpy 中的标准差[重复]

    这个问题在这里已经有答案了 这是我的代码 import numpy as np print np std np array 0 1 它产生0 5 我确信这是不正确的 我究竟做错了什么 默认情况下 numpy std http docs sc
  • 获取ggplot2中绘图区域的宽度

    有没有办法获得网格窗口中绘图区域的宽度 例如 如果plot margin更改或 y 轴标签的字体大小增加 是隐藏在某处str p 任何尺寸的测量都可以 我需要能够测量不同场景下绘图区域宽度的相对变化 例如 y 轴标签字体大小的变化 df d