ggplot facet_wrap 在所有方面始终间隔分类 x 轴

ggplot facet_wrap consistently spaced categorical x axis across all facets

facet_wrap 中使用 scales="free_x" 时,默认情况下似乎每个子图都将占用相同数量的水平 space 并且每个子图中的 x 轴将按比例缩放为了让这件事发生。是否可以让 x 轴的比例在各个方面保持不变(如有必要,每个子图的宽度不同)?

例如,运行 下面的代码生成了一个图,其中右侧 x 轴上的变量比左侧的变量更远(因为分别有 2 个和 3 个不同的 x 值)。有没有办法让 a,b,c 和 d,e 之间的 space 相同?

library(ggplot2)
df <- data.frame(x=c("a", "b", "c", "d", "e"),
                 y=1:5,
                 type=c(1, 1, 1, 2, 2))


p <- ggplot(df, aes(x=x, y=y)) + 
  geom_point() + 
  facet_wrap(.~type, scales = "free_x")
print(p)

谢谢!

您正在寻找参数 space = "free":

facet_grid()
ggplot(df, aes(x=x, y=y)) + 
  geom_point() + 
  facet_grid(.~type, scales = "free_x", space = "free")

输出为: