【发布时间】:2019-05-23 17:18:36
【问题描述】:
我希望使用 ggplot 的 facet_grid 重新创建下面的 gridExtra 输出,但我不确定 ggplot 与图中的图层标识的变量是什么。在这个例子中,有两个 geom...
require(tidyverse)
a <- ggplot(mpg)
b <- geom_point(aes(displ, cyl, color = drv))
c <- geom_smooth(aes(displ, cyl, color = drv))
d <- a + b + c
# output below
gridExtra::grid.arrange(
a + b,
a + c,
ncol = 2
)
# Equivalent with gg's facet_grid
# needs a categorical var to iter over...
d$layers
#d + facet_grid(. ~ d$layers??)
我希望重新创建的 gridExtra 输出是:
【问题讨论】:
-
Faceting 设计用于“小倍数”,即不同数据子集的同一图的多个副本。对于您想要的,grid.arrange 是正确的工具。
-
“我同意,但我不同意”似乎你不同意......你试图制作相同数据的不同图,而不是不同(子集)数据的相同图
-
同意@Gregor 所说的。我了解将两个相关图表并排放置的用例,例如 R4DS 示例,但这些不是通过刻面完成的。为什么不使用正确的工具来完成正确的工作?
patchwork是一个 ggplot 布局包,如果您担心的话,它不会向您的环境添加超过几个功能。您甚至可以仅根据ggplot2负载(大量)的包来装配经典的multiplot之类的东西 -
顺便说一句:small multiples 不是指绘图或层数,而是在数据的某些方面发生变化的情况下重复复制同一图表的技术,例如已完成具有方面功能
-
没有人说这没有用,或者不要这样做,当然也没有人说这将是一个绝对不应该成为
ggplot2的一部分的可怕功能。我们是说构面/小倍数有一个非常清晰的定义(嵌入到它们的实现方式中),并且这是不同的。如果ggplot提供一种方法可能会很好并排对齐不同的图,但它并没有,并且许多其他软件包已经介入以不同的方式提供该功能。
标签: r ggplot2 facet-wrap facet-grid