问题标签 [grob]
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.
r - 如何在绘图区域的精确区域放置带有 annotation_custom() 的 grobs?
我正在尝试使用ggplot2重现以下 [base R] 图
我已经完成了大部分工作,但目前让我感到困惑的是线段的放置,这些线段连接了带有相应标签的地块右侧的边缘地毯图。标签已被绘制(在下面的第二个图中)anotation_custom()
,我使用了@baptiste 关闭剪辑的技巧以允许在绘图边距中绘制。
尽管进行了多次尝试,但我无法将它们放置segmentGrobs()
在设备中的所需位置,以便它们加入正确的地毯刻度和标签。
一个可重现的例子是
如果您没有安装vegan,我dput
会在问题末尾附加一个强化对象,fortify()
如果您希望运行该示例并fortify()
方便地使用ggplot()
. 我还包括一个有点冗长的函数 ,myPlt()
它说明了我到目前为止所做的工作,如果您加载了包并且可以创建mod
.
我已经尝试了很多选项,但我现在似乎在正确放置线段时在黑暗中挣扎。
我不是在寻找为示例数据集绘制标签/段的特定问题的解决方案,而是我可以用来以编程方式放置段和标签的通用解决方案,因为这将autoplot()
构成class(mod)
. 我的标签工作正常,只是线段没有。所以对于问题:
- 当我想放置一个包含从数据坐标到,运行的线的段 grob 时,如何使用
xmin
,xmax
,ymin
,参数?ymax
x0
y0
x1
y1
- 也许以不同的方式问,你如何使用在已知数据坐标之间的绘图区域之外
annotation_custom()
绘制线段,到,?x0
y0
x1
y1
我很乐意收到仅在绘图区域中有任何旧绘图但展示了如何在绘图边缘的已知坐标之间添加线段的答案。
我不喜欢使用,annotation_custom()
所以如果有更好的解决方案,我也会考虑。我确实想避免在绘图区域中有标签;我想我可以通过参数使用annotate()
和扩展刻度中的 x 轴限制来实现这一点expand
。
fortify()
方法_
这dput()
这是来自的输出fortify.prc(mod)
:
我试过的:
图基于我尝试过的myPlt()
这是我myPlt()
从上面所做的。请注意通过标签绘制的小水平刻度 - 这些应该是上图第一个图中的倾斜线段。
r - R ggplot2:光栅grob的annotation_custom不绘制
更新 原来这是无法通过远程桌面连接生成光栅图形的问题。
我想将文件中的图像插入到使用 ggplot2 制作的绘图中。这个问题已经在这里被问过(将图像插入到 ggplot2),但对我来说,接受的答案会产生一个没有任何图像的情节。没有错误或警告:轴、网格和点都绘制得很好,但没有 R 标志(导出的图;我无法在此处上传图像)。下面的代码:
我尝试过使用 xy 值并使用了几种不同的图像和格式,但无济于事。
我遇到的问题是特定于使用带有 annotate_custom() 的 rastergrob 对象,因为ggplot2 文档站点上给出的 annotate_custom() 示例工作得很好,例如:
我在 ggplot2 版本 0.9.3.1 的 Windows 上使用 64 位 R 版本 3.0.2,并且我的包都已更新。
任何想法都会受到欢迎,如果我遗漏了一些简单的东西,我们深表歉意!
r - 调整 ggplot2 中轴文本的“边距”空间
哪个属性(如果有)ggplot
控制轴文本
的宽度(或空格量)?
在下面的示例中,我的最终目标是“推入”顶部图表的左侧,使其与底部图表对齐。
我试过theme(plot.margin=..)
了,但这会影响整个情节的边缘。
facet
'ing 也无济于事,因为 y 上的比例不同。
作为最后的手段,我意识到我可以修改轴文本本身,但是我还需要计算每个图形的切割。
可重现的例子:
r - 如何使用 facet_wrap 产生的空白空间?
我有一个形成n x m
网格的多面图。按照设计,最后一个(右下角)单元格总是空的,所以我想通过添加另一个 ggplot 对象来利用额外的空间。我目前的解决方案依赖于低级viewport
方法,这不是很优雅,需要对位置和大小进行一些硬编码。
相反,我假设空白空间可以通过其他方式到达,可能是gridExtra
?
这是n=m=2
. 请注意,边缘没有正确对齐,因此需要一些额外的工作来手动调整视口的参数,这很痛苦,尤其是在(n, m)
之后更改时。
r - 将 grob 添加到 R 中的基本图
我想将我使用splitTextGorb
从包构建的多行文本添加RGraphics
到基本图。我尝试了以下方法,但这不起作用(即文本未显示在图上)
我知道这mtext
是将文本添加到基础图的一个选项,但我想splitTextGrob
专门使用它,因为它提供了一些灵活性,mtext
或者grid.text()
没有。
任何帮助,将不胜感激。谢谢!
r - 使用 grid.arrange 在底部的通用 x 轴标签和图例
我正在尝试使用 grid.arrange 绘制多个彼此相邻的图表。具体来说,我希望这些图在底部有一个共享的 x 轴标签和一个图例。这是我用于安排的代码(此处的工作示例),没有通用 x 轴:
图例是一个 TableGrob 对象;通用 x 轴应该是沿线的 textGrob
但是,如果我将其添加到代码中,则图例将移至右侧。如果我指出图例和标签都应该在底部,其中一个仍会移动到右侧。因此,问题是,有没有一种方法可以将通用 x 轴标签与底部的图例结合起来?
r - 如何将 lapply 与 ggplotGrob() 一起使用?
我正在尝试使用 lapply 将函数 ggplotGrob() 应用于 ggplots 列表,但似乎无法从中获取 grob 对象列表。对于这个项目,根据用户输入生成可变数量的图,我需要一种动态的方式来生成网格。我需要从图中定义 grobs,以便在显示之前为所有图表分配相同的宽度。
例如,我有地块 p1 和 p2。如果我手动进行:
我得到了我的 2 个地块。
现在如果我这样做
我收到一条错误消息
安排Grob(...,as.table = as.table,clip = clip,main = main,:输入必须是grobs!
我尝试使用 unlist() 但我得到了同样的错误
最终,我想通过 lapply 建立 grobs 列表
并且能够使用 grid.arrange 来安排所有的 grobs。我觉得我忘记了从列表中检索每个对象作为 grob 的简单步骤。有人解决了这个问题吗?
谢谢
r - ggplotGrob的逆?
我有一个操作 ggplot 对象的函数,通过将其转换为 grob 然后修改图层。我希望该函数返回一个 ggplot 对象而不是一个 grob。有没有一种简单的方法可以将 grob 转换回 gg?
上的文档ggplotGrob
非常稀疏。
简单的例子:
更新:
为了回答评论中的问题,这里的动机是根据每个构面中标签名称的值以编程方式修改构面标签的颜色。下面的函数运行良好(基于上一个问题中 baptise 的输入)。
我希望 from 的返回值colorByGroup
是一个 ggplot 对象,而不仅仅是一个 grob。
代码如下,有兴趣的可以看看
r - 如何使用 R 将本地 png 文件复制粘贴到 word 文档?
我有大约 10,000 张 png 图像整齐地保存在我 PC 上的不同文件中。我想编写一个函数,该函数执行诸如转到特定文件夹并迭代地将该文件夹中的所有 png 文件复制粘贴到 word 文档的功能。这在R中可能吗?
我看过包R2wd
,但遗憾的是它只有一个函数,它接受 RData 并将其绘图输出到 word 文档(函数wdPlot
)。
我还为每个绘图保存了 RData,因此我应该能够简单地加载与特定绘图关联的 RData,然后使用wdPlot
. 问题是,当我生成我的 png 时,情节是 grobs,我做了如下的事情:
现在,当我尝试通过首先将 rp 加载到 RI 中天真地执行以下操作来将该 rp 放到 word 文档中时,它不会将标题放大或任何其他grid.edit
更改的图输出到 MS Word。
所以,重申一下:我有所有这些 png 文件。在不同的时候,我必须将它们的一个子集复制粘贴到一个 word 文档中。我懒得每次都手动做,想要一个程序为我做。
编辑 1
所以,根据下面的建议,我已经阅读了 Markdown。在这篇文章之后如何使用 knitr 为降价设置本地图像的大小? 我写了一些类似的东西:
以下是生成的 Word 文档中的内容的屏幕截图。我该如何解决这个问题?当上面的 for 循环运行时,我希望图像一个接一个地出现在文档中。
请注意,这是我第一次使用 Markdown,因此评论中链接的任何相关教程也可能会有很大帮助。
编辑 2 我遵循了下面第二个答案的示例。这是我获得的输出
如您所见,没有图像,只有 html 标签。我该如何解决?
r - 在 grid.arrange 中设置图形 y 轴的高度,但不是整个绘图区域的高度
使用网格排列时,我遇到了以下问题:
我希望我的所有面板(a,b,c)具有相同的大小,但是因为我已经从面板 a 和 b 中删除了标签和刻度线(只有一个 x-轴)图a和b的大小更大,等于图c的大小+ c的标签和刻度线的空间。我不能使用ggplot2::facet_grid
任何一个,因为我想独立指定 y 轴限制(例如,a 到 40 以及 b 和 c 到 15)。您可以在下面找到用于生成此图的工作示例,根据这篇文章垂直对齐图,但我不知道如何分别确保每个图的高度相同。欢迎任何指点。
我在 Linux 上使用 R。我的 session.Info() 的输出是: