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")
输出为:
在 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")
输出为: