问题标签 [r-lemon]
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 - ggplotGrob 对象上的 cbind 失败并显示“mmm < each 中的错误:未实现这些类型的比较”
这似乎与@baptiste 在 2014 年试图解决的问题相似。我正在重新审视我在 6 月份写的代码,其中涉及创建三个 ggplotGrobs 并将它们与对 cbind 的调用结合起来。现在,此代码失败并显示以下消息:“mmm < each 中的错误:未实现这些类型的比较。”
我认为这将特定于我的特定应用程序,但我能够制作一个非常简单、可重现的示例。即使在两个相同的 ggplotGrobs 上执行 cbind,此代码仍然会失败。
错误和相关的回溯在这里:
此代码在带有 grid_3.4.2、gtable_0.2.0 和 ggplot2_2.2.1 的 OS X 10.11.6 上的 R-3.4.2 以及带有 grid_3.3.2 的 Linux 上的 R-3.3.2(从 Ubuntu 16.04 上的源代码编译)失败、gtable_0.2.0 和 ggplot2_2.2.1。
在制作上面的示例之前,我注意到“lemon”包(“gtable_show_lemonade”)中的一个小插曲在两个 gtable 的 cbind 时在最后失败并出现相同的错误。我通过从源代码运行此小插图的代码来确认此错误,类似于:
编译后的小插图(cbind 失败)在这里:https ://cran.r-project.org/web/packages/lemon/vignettes/gtable_show_lemonade.html
使用在 OS X 10.11 (El Capitan) 上运行的上述 R-3.4.2 实例获得了小插图编译期间的失败。
对于解决此问题的任何帮助,我将不胜感激!由于我想使用我的 Mac 来生成数字(更好的字体情况),我希望有一种方法可以重载一个函数来解决这个问题。
更新:
size = 'max'
如果指定(或)默认情况下,这“仅”是一个问题size = 'min'
。我认为我可以使用size = 'first'
or来解决它size = 'last'
,它不会执行有问题的高度比较,但是默认行为不起作用肯定不方便(并且在某些情况下size = 'max'
很有用)。
r - 添加一个共同的图例
我试图用ggplot2
. 这是我的初始代码
收到此错误
plot$scales 中的错误:$ 运算符对原子向量无效
然后。
但是我获得了图形 但我需要在每个情节中添加一个标题所以我改为这个
但我得到了
gList 中的错误(list(grobs = list(list(x = 0.5,y = 0.5,width = 1,height = 1,:
“gList”中只允许“grobs”)
Además:警告消息:
1:在 grob$wrapvp < - vp : Realizando coercion de LHD a una lista
2: In grob$wrapvp <- vp : Realizando coercion de LHD a una lista
所以我删除了这个common.legend
部分并得到了这个情节
有没有办法在不使用的情况下在每个带有灰色框的图中放置标题
facet_grid
(因为我在数据中没有该信息)?和有没有办法将图例放在多图的空白处?
非常感谢您的帮助
r - R:gtable 和 ggplot 对象之间的可靠转换。如何在ggplot_build()之后使lemon :: reposition_legend()工作?
我手头有一个非常复杂的案例ggplot2
。我尝试使用下面的数据用 MWE 来举例说明iris
。
我只是在方面有箱线图,并想移动图例以占据空白方面的空间。
这一切都很好,我使用lemon::reposition_legend()
它并且它有效。
但是,我必须在图中修改一堆东西(即添加重要的测试结果和其他与这个问题无关的东西),为此我被迫ggplot_build()
在我的输出图上使用。
使用ggplot_build()
修改我的情节后,我似乎无法reposition_legend()
成功使用了......
在下面查看我的 MWE。
首先,我加载我需要的包,并根据对这个问题shift_legend()
的回答定义一个函数(使用) 。reposition_legend()
然后我加载iris
数据并shift_legend()
成功制作我的情节。
这会产生这个输出,直到这里都很好:
注意这是我希望能够重现的排列(在使用之后),图例占据了空白方面的空间。
ggplot_build
但现在我需要使用ggplot_build()
来添加和修改我的情节中的东西。之后,我可以在不使用reposition_legend()
.
但我仍然想重新定位图例,所以我尝试reposition_legend()
再次使用将ggplot_built
对象转换为gtable
对象(根据函数文档,它也可以接受作为输入)。
在这里我得到这个错误:
reposition_legend(p, "center", panel = names(pnls)) 中的错误:参数中没有给出图例,或者无法从图中提取图例。
我再次尝试将gtable
对象转换为ggplot
使用ggplotify::as.ggplot()
. 这次我没有得到任何错误,但传说没有按预期重新定位......
请帮忙!
编辑
我尝试按照评论和答案中的建议更改工作流程,但无济于事。
作为P
原始图,我需要修改的是ggplot_build(P)$data
数据框中。
此数据框如下所示:
我修改了它的一些方面,比如annotation
(不适用于本 MWE)和colour
.
但是,如果按照建议,我尝试在使用P
之前ggplot_build()
转移图例以提取和修改相关信息,我必须执行以下操作:
第一个命令打开一个新的绘图窗口,这是不受欢迎的。
第二个命令产生这个:
这看起来不像data
我在其中修改的数据框P
......如果可能的话,P2
现在有什么线索可以找到它吗?
编辑 2
就像你看到我现实生活中的箱线图的一个例子,看看为什么修改ggplot_build(P)$data
对我很重要。
无法仅显示与 的显着成对比较geom_signif()
。
我所做的是使用geom_signif()
虚拟文本来填充我可以访问的注释数据框ggplot_build(P)$data[[3]]
,然后将我的实际显着性值添加到$annotation
列中,并相应地对数据框进行子集化以仅显示显着的比较。在那里我可以完全控制,并且可以根据显着性改变比较的颜色,哪个组的平均值更高等等。
不久前我在这里问过这个问题,自从我完善了这个并将其包装成一个函数以来。
如您所见,这与我的功能发生冲突shift_legend
,因为我似乎没有找到访问data
数据框的方法...
到目前为止,这是我对现实生活数据的了解,我将图例放在了底部,但最好是占用空白面空间,特别是因为我有更多空白面的情况。