Scales =" free"适用于facet_wrap但不适用于facet_grid

时间:2016-06-07 01:25:59

标签: r ggplot2 facet-wrap

我试图理解为什么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()的行为不同。有什么可以解释的?

1 个答案:

答案 0 :(得分:28)

参考this link

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对于彼此之间更加独立的情节更有用。