问题标签 [gtable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1000 浏览

r - 如何在 pdf 的多页上绘制多个 ggplot_gtable 对象?

这不是一个重复的问题,尽管标题可能看起来相似。

假设我有一个函数 f1(),它会绘制一次“gTable,grob,gDesc”类的对象。我正在使用 grid.draw() 来绘制对象。

所以当我们打电话时:

这将给出我想要的一页pdf。

但是,当我想通过代码在一个 pdf 中绘制两个图时:

我得到的是一个只有第二个情节的单页pdf。这是第一个情节被第二个情节覆盖。为了克服这个问题,我使用了 grid.newpage() ,但这会在 pdf 中添加一个额外的空白页。如何避免这种情况?只有设置了参数,我才能使用额外的参数来创建新页面。但是,我们还有其他选择吗?

我玩过 grid.arrange() 以及 pdf() 中的 onefile 参数,但没有任何效果。

此外,当我尝试在 R 绘图窗口上绘制这些内容时,它会覆盖现有的打开图形设备。所以在第二次绘制后,我无法使用后退箭头查看第一个图。 R绘图窗口的后退箭头

编辑:示例 R 代码绘制类“gTable,grob,gDesc”的对象

这是一个示例函数。因此,如果我调用以下代码:

在上述情况下仅创建单页 pdf。如果你只是打电话

然后在 R 绘图窗口中,我可以查看第二个绘图。由于第一个绘图被覆盖,后退箭头按钮被禁用。

0 投票
1 回答
281 浏览

r - R:双 y 轴 panel.grid.major 未对齐

我正在尝试按照此处有关如何创建双 y 轴图的说明进行操作(是的,我知道)。我的代码是这里

然而,在输出中,一些主要的网格线略微未对齐(见红色框),而其中一些则完全对齐。我不确定是什么导致了其中一个地块的这种膨胀。我重写了该站点上的代码以更好地理解它,并且可能在某处引入了错误。

在此处输入图像描述

一个简单的解决方法是关闭其中一个图上的网格线,但这似乎隐藏了问题而不是修复它。


编辑:

我尝试在此处原样运行原始代码,但在第 130 行遇到以下错误。

因此,我无法检查问题是否是我在转录时引入的错误。

0 投票
0 回答
163 浏览

r - 用 ggplot2/gtable 匹配两个图的宽度

我正在尝试匹配垂直排列的两个图的绘图区域的宽度(两个图上的数据范围相同)。我尝试使用 gtable 将它们放在一起,然后操纵边距进行调整。看起来,由于底部图没有轴刻度或标签,设置相同的边距会使图稍微错位。我不清楚绘图区域左侧区域的总宽度是如何计算的。似乎文本标签的宽度以某种方式添加到其中,我无法计算出它的宽度。(我可以通过实验来匹配宽度,但我需要生成许多这样的图,我希望解决方案可以处理任意数据。)我尝试了 ,plot.marginpanel.margin各种margin组合axis.text.y和(已弃用)axis.ticks.margin.y但无济于事。这是一个最小的工作示例:

我在网上找到了这个解决方案:https ://github.com/hadley/ggplot2/wiki/Align-two-plots-on-a-page 。它适用于简单的示例,但我的实际情节变得乱码。我对 ggplot2 内部结构的了解不足,无法解决问题所在。此解决方案的另一个限制是,在示例中,两个图的高度相同,我希望底部图的高度约为顶部图的 1/10。

0 投票
1 回答
1966 浏览

r - 安排多个ggplots,但避免由于轴标签而挤压

我一直在使用 cowplot::plot_grid 来排列多个 ggplot 图形,总的来说效果很好。但是,我现在遇到了一个问题,我想在底部图上包含 x 轴标签,但它最终会挤压所有图(使用 align =“vh”)​​或最低图(使用 align =“ v") 列中。

有什么方法可以提取 x 轴标签 grob,并将其添加为 plot_grid 中的另一个图(可能类似于https://github.com/wilkelab/cowplot/blob/master/vignettes/shared_legends.Rmd for legends )? 还是另一种方法?

感谢您的任何想法!

在此处输入图像描述

0 投票
0 回答
313 浏览

r - ggplot+gtable 对象在调用时第一次给出空白图,但后来绘制成功

我写了一个名为gg(). 它有 2 个 ggplots 相互叠加,因此我有 2 个 y 轴——一个在右边,另一个在左边。类似感谢 Sandy Muspratt 的参考这已从如何管理 gtable() 的 t、b、l、r 坐标以正确绘制辅助 y 轴的标签和刻度线中共享

打印的最终对象是类的,gtable, grob因为我使用gtable,grid包来完成此操作。

现在来解决问题:

我将此函数加载到一个包中,并在命名空间文件中专门导入了每个包中的所有函数,例如gtable.etcgrid和整个包ggplot2。现在,在使用附加此包后,library()我调用该函数gg()。它会在 RStudio 中创建一个空白图,甚至在我第一次调用它的情况pdf()下在 pdf 中创建。dev.off()但如果我再次调用它,就会生成图。

当我独立调用相同的函数时,即不是通过加载包而是使用source()单独加载函数文件然后调用gg(),它甚至是第一次绘制。

我需要有关所有可能的原因/原因的帮助?

一世)。有没有人对对象有类似的问题gtable

您认为错误/错误的不同可能性是什么。我同意需要共享代码以便更好地理解。我将很快添加该函数的一个更简单的版本以及所需的任何其他细节。

编辑 1 :- 添加一个简单版本的 gg()

我将在代码的倒数第二行解释“newpage”参数。这是用户传递的一个参数,告诉我想在同一个 pdf 中创建另一个绘图页面,该页面使用 pdf() 打开,并将在最后一个绘图后使用 dev.off() 关闭。在最后一个情节中,用户将通过 newpage = FALSE

0 投票
0 回答
579 浏览

r - 有条件地格式化R中表格的着色

有没有办法在使用导出 PDFtableGrob时有条件地格式化单元格/行?gridExtra基于数据框中的条件数值,我希望为我的 PDF 输出更改行颜色背景/填充格式。

样本数据:

现在我有一个简单的主题来格式化输出:

这是我的快速 PDF 输出代码:

a列中和b样本数据中的数值实际上是成功和不成功的事件。我最终会很快找到成功百分比并将其添加到我的表中作为输出。

我希望实现的是格式化我的 PDF 中表格的整行,以便任何大于或等于 50% 的值df1都将被格式化为这种颜色:#C4122E如果低于 50%,则格式化为#1B458F

0 投票
2 回答
3886 浏览

ggplot2 - ggplot grobs 与 tableGrob 对齐

我很难找到对齐 ggplot grob 和 table grob 的解决方案。我尝试按照此处的说明进行操作,但仍然没有给出我想要的结果。

我希望表格中的每个单元格都与直方图中的相关条对齐,但仍然无法理解如何从布局中实现 t,l,b,r。这是我得到的输出

在此处输入图像描述

0 投票
0 回答
238 浏览

r - 如何在 gWidgets (R) 中自定义 gtable 行的背景颜色

假设我有一个gtable这样的gwindow

我希望能够任意设置各个行的背景颜色,例如基于该行的列的值(例如,所有元音变为红色的行)。

这可能吗?我对 Gtk 不太了解,但我可以了解是否有人可以为我指明正确的方向,例如,我如何访问行对象以便对其应用 Gtk 函数以更改其颜色。

谢谢你的帮助!

0 投票
2 回答
2972 浏览

r - 寻求 ggplot 2.2.0 破坏的 gtable_add_grob 代码的解决方法

在具有多个构面变量的图中,ggplot2 重复“外部”变量的构面标签,而不是在“内部”变量的所有级别上具有单个跨越构面条。我有一些代码,我一直在使用包中的单个跨越刻面条覆盖重复的外部刻面gtable_add_grob标签gtable

不幸的是,由于分面条的 grob 结构发生了变化,此代码不再适用于 ggplot2 2.2.0。具体来说,在 ggplot2 的先前版本中,每一行 facet 标签都有自己的一组 grobs。然而,在 2.2.0 版本中,看起来每个垂直的刻面标签堆栈都是一个单独的 grob。这破坏了我的代码,我不知道如何修复它。

这是一个具体的例子,取自我几个月前回答的一个 SO 问题

我们从一个包含三个层面的情节开始。

在此处输入图像描述

现在我们将用跨越条覆盖顶部的两个刻面条,这样我们就没有重复的条标签:

这就是这个情节在 ggplot2 2.1.0 中的样子:

在此处输入图像描述

但是,如果我用 ggplot2 2.2.0 尝试相同的代码,我会得到原始图,而条形标签没有任何变化。看看原始情节的 grob 结构就可以看出p为什么会发生这种情况。我已经粘贴在这个问题底部的 grob 表中。为了节省空间,我只包含了与刻面条相关的行。

查看该cells列,请注意,在 2.1.0 版本的绘图中,每行中的前两个数字是 3、4 或 5,表示 grob 相对于绘图中其他 grob 的垂直位置。在上面的代码中,tl参数gtable_add_grob设置为 3 或 4 的值,因为这些是我想用跨越条覆盖的刻面条行。

现在查看cells2.2.0 版图中的列:请注意,前两个数字始终为 6。还请注意,刻面条仅由 8 个 grobs 组成,而不是 2.1.0 版中的 24 个。在 2.2.0 版本中,似乎每个包含三个方面标签的堆栈现在都是一个单独的 grob,而不是三个单独的 grob。因此,即使我将tandb参数更改gtable_add_grob为 6,所有三个方面都被覆盖。这是一个例子:

在此处输入图像描述

所以,在冗长的介绍之后,这是我的问题:如何使用 ggplot2 版本 2.2.0 创建看起来像我使用gtable_add_grobggplot2 版本 2.1.0 创建的跨平面条?我希望有一个简单的调整,但如果它需要大手术,那也没关系。

ggplot 2.1.0

ggplot2 2.2.0

0 投票
1 回答
1406 浏览

r - R:用于聚类树状图的 ggplot 高度调整

这个想法是结合 R 包ClustOfVarggdendro给出变量聚类的可视化总结。

当数据中的列数很少时,除了有没有覆盖的区域(如下图圈出)之外,结果都很好。使用mtcars例如:

在此处输入图像描述

当有大量列时,会出现另一个问题。即,彩砖部分的高度与树状图的高度不匹配。

在此处输入图像描述

如果我们将 R 升级到 3.3.1 版, @Sandy Muspratt 实际上已经为此提供了一个很好的解决方案。R: ggplot 微调聚类总结

但由于我无法更改部署在企业服务器中的 R 版本,我想知道是否有任何其他解决方法可以使这两个部分保持一致。