Scales = "free" 对于 facet_wrap 是起作用的,但对于 facet_grid 则不起作用。

35
我正在尝试理解为什么facet_grid()facet_wrap()的输出不同,即使输入相同:

facet_grid

ggplot(temp, aes(x = valor)) +
geom_histogram(binwidth = 5, fill = NA, color = "black") +
facet_grid(estratificacao ~ referencia, scales = "free") +
scale_x_continuous(breaks = seq(0, 100, 10)) + theme_classic()

enter image description here

facet_wrap

ggplot(temp, aes(x = valor)) +
geom_histogram(binwidth = 5, fill = NA, color = "black") +
facet_wrap(estratificacao ~ referencia, scales = "free") +
scale_x_continuous(breaks = seq(0, 100, 10)) + theme_classic()

enter image description here

看,参数 scales = "free"facet_grid()facet_wrap() 上的行为不同。有什么可以解释这个现象吗?

总是有lattice包可以在网格上进行任何自由比例的操作。 - mlt
1个回答

57

关于这个链接

facet_grid按照一个或两个在水平和/或垂直方向上变化的变量将数据拆分成小面板,而facet_wrap则将小面板放置在一起,并在指定的列数或行数后换行。换句话说,facet_wrap仅具有水平维度。

因此,使用该链接中的示例,sp + facet_grid(. ~ sex)将与sp + facet_grid( ~ sex)行为相同。在您的情况下,facet_grid(. ~ referencia)facet_wrap( ~ referencia)应该产生相同的图。

对于两个或更多维面板,facet_grid根据参数(vertical ~ horizontal)生成一个图形网格。另一方面,facet_wrap将仅使图形水平堆叠。然后,用户可以通过指定列数或行数来设置布局。

现在,当添加scales = "free"参数时,在facet_grid中的小面板仍将受到网格的限制,因此同一行中的图表不能具有不同的y轴。类似地,每列仅可以有一个x轴。然而,使用facet_wrap,每个小面板都可以独立显示,因此它可以“自由”设置其x轴和y轴。

在我看来,当您想要相对比较同一类别中的图表时,facet_grid很有用,这可以通过设置相同的轴刻度来实现。同时,facet_wrap更适用于彼此之间更独立的图表。


1
我总是喜欢学习我使用的工具的理论基础。这肯定对我有帮助。 - iatowks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接