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

iat*_*wks 18 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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

请参阅,该参数scales = "free"对于facet_grid()和没有相同的行为facet_wrap().有什么可以解释的?

zyu*_*idi 30

参考此链接:

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 facet_grid仍然会受到网格的限制,因此同一行上的绘图不能具有不同的y轴.同样,每列只能有一个x轴.使用facet_wrap虽然,每个小区被独立地显示,所以可以"自由"其x轴和y轴.

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