cockplot:如何通过修改轴限制来自定义主面板和边缘图之间的间隙?

2024-01-05

这是@ClausWilke 提供的解决方案之一的后续问题(see post https://stackoverflow.com/questions/47542849/marginal-plots-using-axis-canvas-in-cowplot-how-to-insert-gap-between-main-pane)在主面板和边缘图之间插入间隙。 如何确定 (scale_x_连续) 限制? 另外,如果我们使用“NA”作为上限会发生什么?

# Example with limits set to: (-2,4.5)
require(ggplot2)
require(cowplot)

pmain <- ggplot(data = mpg, aes(x = cty, y = hwy)) + 
  geom_point() + 
  xlab("City driving (miles/gallon)") +
  ylab("Highway driving (miles/gallon)") + 
  theme_grey()

xbox2 <- axis_canvas(pmain, axis = "x", coord_flip = TRUE) + 
  geom_boxplot(data = mpg, aes(y = cty, x = 1))  + 
  scale_x_continuous(limits = c(-2, 4.5)) + coord_flip()

ybox2 <- axis_canvas(pmain, axis = "y") + 
  geom_boxplot(data = mpg, aes(y = hwy, x = 1)) + 
  scale_x_continuous(limits = c(-2, 4.5))

p1 <- insert_xaxis_grob(pmain, xbox2, grid::unit(0.8, "in"), position = "top")
p2 <- insert_yaxis_grob(p1, ybox2, grid::unit(0.8, "in"), position = "right")

ggdraw(p2)

对于连续的 x 轴刻度,您可以使用expand_limits在主图和边缘图之间添加一些空白。

例如,您的ybox2是具有连续 x 轴刻度的单箱形图。默认情况下,该图的 x 范围大约为 0.6 到 1.4(您可以通过运行来查看这一点)ggplot(mpg, aes(y=hwy, x=1)) + geom_boxplot())。以下代码将 x 轴下限设置为 0.2,这意味着 x 轴范围的大约 0.4/(0.8+0.4) = 33% 将是主图和边缘图之间的边距。我们也做同样的事情xbox2.

ybox2 <- axis_canvas(pmain, axis = "y") + 
  geom_boxplot(data = mpg, aes(y = hwy, x = 1)) +
  expand_limits(x = 0.2)

xbox2 <- axis_canvas(pmain, axis = "x", coord_flip = TRUE) + 
  geom_boxplot(data = mpg, aes(y = cty, x = 1))  + 
  coord_flip() +
  expand_limits(x = 0.2)

p1 <- insert_xaxis_grob(pmain, xbox2, grid::unit(0.4, "in"), position = "top")
p2 <- insert_yaxis_grob(p1, ybox2, grid::unit(0.4, "in"), position = "right")

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

cockplot:如何通过修改轴限制来自定义主面板和边缘图之间的间隙? 的相关文章

随机推荐

  • 如何在我的应用程序中使用 UIKit 本地化字符串

    我们正在构建一款 iOS 游戏 我们公司需要取消按钮UIAlertView应始终根据用户的设备语言进行本地化 看起来UIKit框架中有这样一个字符串 我如何在我自己的应用程序中访问它 或者 还有其他方法可以创建带有本地化取消按钮的 UIAl
  • SQL 手机号码验证

    我有我的 SQL 数据库 我想在其中过滤掉所有有效的手机号码 我目前使用如下 WHERE pn PhoneNumber LIKE 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9 OR pn Phone
  • 如何仅为测试源添加 Scala 编译器插件

    是否可以仅在编译测试源时添加Scala编译器插件 当通过调用 SBT 添加编译器插件时addCompilerPlugin然后添加库依赖项 相关方法有 Transforms dependency to be in the auto compi
  • jQuery Offset 返回负值

    我有一个像下面这样的场景 在我的用户界面中 我将有一个文本框 如果我在文本框中输入了数字 我需要向下滚动到相应的页码 In Dom 我将有一些带有各自 id 的 div 如果用户输入页码为 5 我将检查 dom 中的第 5 个 div 偏移
  • 在浏览器中流式传输 Pdf 时如何设置文件名?

    不确定如何确切地表达这个问题 所以欢迎编辑 无论如何 就这样吧 我目前使用 Crystal Reports 生成 Pdfs 并将输出流式传输给用户 我的代码如下所示 System IO MemoryStream stream new Sys
  • Cmake 无法找到 Python 库

    出现此错误 sudo unable to resolve host coderw ll Could NOT find PythonLibs missing PYTHON LIBRARIES PYTHON INCLUDE DIRS CMake
  • 升级到 R 2.15.2 无法加载 stats 包

    运行 Ubuntu 12 04 今天终于从 2 12 升级到 2 15 2 当我启动 R 时 出现此错误 Error in dyn load file DLLpath DLLpath unable to load shared object
  • 在Python中使用Hadoop处理大型csv文件

    我有一个巨大的 CSV 文件 想在 Amazon EMR python 上使用 Hadoop MapReduce 进行处理 该文件有 7 个字段 但是我只查看date and quantity field date receiptId pr
  • 如何在PHP中备份MySQL数据库?

    我对如何通过 PHP 备份 MySQL 数据库没有基本的了解 我遵循了一篇教程 但它并没有帮助我理解 有人可以解释如何从 PHP 创建 MySQL 备份吗 虽然您可以从 PHP 执行备份命令 但它们实际上与 PHP 没有任何关系 这都是关于
  • pandas 将两列分组并乘以另外两列

    我有一个像这样分组的数据框 price quantity vat date brand 20 Jun 13 Reebok 7 0 8 2 2 Adidas 12 0 3 3 8 Campus 2 5 38 4 2 Woodlands 23
  • 无法加载文件或程序集“System.Data.SQLite,版本=1.0.109.0 - 当我引用 1.0.109.1 时,为什么它会搜索版本 1.0.109.0

    我已经创建了新的ASP NET Core Web Application并使用ASP NET Core 2 1跨平台框架 接下来 我添加了System Data SQLite Core using Nuget manager 它是适用于 x
  • 使用 jQuery 在 div 之间转换

    我有三个divs 我有一个主 div 为用户提供了选择查看其他两个 div 的选项 如果我只使用文本并且不隐藏原始 div 它就可以工作 但我想使用图像映射并隐藏主 div 然后如果用户选择 他们可以单击后退按钮并让 div 重新出现 并且
  • Polars 扫描 s3 多部分镶木地板文件

    我在 s3 上有一个多部分分区的镶木地板 每个分区包含多个 parquet 文件 下面的代码缩小了单个分区的范围 该分区可能包含大约 30 个 parquet 文件 当我使用scan parquet在 s3 地址上 包括 parquet通配
  • Angular6获取方法响应“_isScalar”:false,“source”

    我正在尝试在 html 页面上显示 json 数据 服务器上的数据向我显示 json 数据 但是当我尝试在页面上显示它时 它给了我这个数据 isScalar false source isScalar false source isScal
  • 为什么文件在“查找结果 1”的第二个窗格中打开?

    我正在使用 vs net 2012 当我在整个解决方案中搜索字符串时 在查找结果窗格中 当我单击文件时 它会在底部窗格中打开该文件 它曾经在我所有其他源文件所在的顶部窗格中 正常 打开 我做了什么让 vs net 扰乱了我的思维 你可能do
  • 避免 Scala 中冗余的泛型参数

    所以这是一个相当直接的端口这个Java问题 https stackoverflow com questions 9684186 redundant generic parameters到斯卡拉 我们有一堆采用通用参数的特征 如下所示 tra
  • javascript 参数是否延迟计算?

    我制作了一个依赖注入模块 它使用了我发现的默认参数的 hack function x SomeDependency SomeDependency 未定义 但我可以解析它的 toString 对于类构造函数 箭头函数和简洁的对象方法也是如此
  • 多线程应用程序中的 WCF 代理单例

    我刚刚继承了一个在 net 4 上运行的 asp net mvc 3 站点 该站点大量使用对非常慢的外部服务的 WCF 调用 该网站尚未上线 我发现的一段奇怪的代码是围绕 WCF 客户端代理使用的 为整个 aspnet 应用程序创建一个实例
  • 如何告诉作曲家使用我的叉子的分支?

    在 symfony2 项目中 我使用 jms serializer bundle 并且它的依赖项之一存在问题 即jms metadata图书馆 我已经分叉了元数据库并在bugfix doctrine proxy branch 现在我想知道如
  • cockplot:如何通过修改轴限制来自定义主面板和边缘图之间的间隙?

    这是 ClausWilke 提供的解决方案之一的后续问题 see post https stackoverflow com questions 47542849 marginal plots using axis canvas in cow