您可以使用 cols 作为图中的 x 变量来划分网格吗?

1 r ggplot2 facet-grid

Auto MPG 数据集为例,我想创建显示高速公路里程〜年份、〜位移、〜缸之间关系的图。您可以使用面网格来完成此操作,其中行是制造商且列 = c(年份、位移和 cyl)?

到目前为止,我只能在三个单独的图中完成此操作,并且希望合并为一个图。

ggplot(mpg, aes(year, hwy)) + 
 geom_smooth(method = "lm", se = FALSE)+
 facet_grid(rows = vars(manufacturer))

ggplot(mpg, aes(displ, hwy)) + 
 geom_smooth(method = "lm", se = FALSE)+
 facet_grid(rows = vars(manufacturer))

ggplot(mpg, aes(cyl, hwy)) + 
 geom_smooth(method = "lm", se = FALSE)+
 facet_grid(rows = vars(manufacturer))
Run Code Online (Sandbox Code Playgroud)

div*_*san 5

在 ggplot2 中,您只能对单个变量进行分面。解决方案是将数据转换为长格式,以便您想要分面的变量包含在单个变量中。在这里,我们将yeardisplcyl转换为一name列(我们对其进行分面)和一value列用作 X 轴值。

请注意,我们至少需要在 X 轴上设置自由比例,因为年份不同变量之间的比例如此不同

mpg %>%
    pivot_longer(c(year, displ, cyl)) %>%
    ggplot(aes(value, hwy)) + 
    geom_smooth(method = "lm", se = FALSE)+
    facet_grid(rows = vars(manufacturer), cols=vars(name), scales = 'free')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述