问题标签 [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.

0 投票
1 回答
253 浏览

r - 多面散布ggplot2中的不同x和y轴比例

我使用lemon包 withggplot2使用以下代码绘制带有回归和置信区间线的多面散点图

我希望 x 轴和 y 轴刻度都是免费的。但我只得到免费的 y 轴刻度。 在此处输入图像描述 另外,我想将预测区间添加到图中。

这是dput()格式的数据集。

在此先感谢您的帮助。

0 投票
1 回答
1473 浏览

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'很有用)。

0 投票
1 回答
5373 浏览

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(因为我在数据中没有该信息)?和

  • 有没有办法将图例放在多图的空白处?

非常感谢您的帮助

0 投票
0 回答
1369 浏览

r - facet_rep_wrap repeat.tick.labels=F 仍然显示所有轴

我有几个密度图的网格,但为了便于阅读,我只想在一个轴上显示轴,而不是所有轴。我从柠檬包中遇到了 facet_rep_wrap,据说它在做我想要的,但它仍然显示所有轴。我错过了什么?

在此处输入图像描述

0 投票
1 回答
890 浏览

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().

产生这个: 测试2

但我仍然想重新定位图例,所以我尝试reposition_legend()再次使用将ggplot_built对象转换为gtable对象(根据函数文档,它也可以接受作为输入)。

在这里我得到这个错误:

reposition_legend(p, "center", panel = names(pnls)) 中的错误:参数中没有给出图例,或者无法从图中提取图例。

我再次尝试将gtable对象转换为ggplot使用ggplotify::as.ggplot(). 这次我没有得到任何错误,但传说没有按预期重新定位......

它产生这个: 测试222

请帮忙!

编辑

我尝试按照评论和答案中的建议更改工作流程,但无济于事。

作为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数据框的方法...

到目前为止,这是我对现实生活数据的了解,我将图例放在了底部,但最好是占用空白面空间,特别是因为我有更多空白面的情况。

真实案例