是否可以在facet_wrap
或facet_grid
内释放刻度的位置,但固定刻度(即刻度线之间的距离)?
fixed
选项可以固定给定比例尺的位置和比例尺。例如,在下面,每个窗格都有相同的限制和缩放比例:
library(ggplot2)
ggplot(within(mtcars,
split <- rowSums(sapply(c(.3,.5,.6),function(x) disp> quantile(disp,x))%*%(1:3))),
aes(mpg, hp)) + geom_point() + stat_smooth(method='lm', se=F) +
facet_wrap(~split, scales = 'fixed')
另一方面,free
可选选项允许位置和缩放比例随窗格的不同而变化:
ggplot(within(mtcars,
split <- rowSums(sapply(c(.3,.5,.6),function(x) disp> quantile(disp,x))%*%(1:3))),
aes(mpg, hp)) + geom_point() + stat_smooth(method='lm', se=F) +
facet_wrap(~split, scales = 'free_y')
是否可以允许刻度中心变化,但可以固定刻度线之间的距离?在上面的示例中,这相当于将每个比例尺都以窗格的平均y值为中心,但将刻度线之间的距离固定为50。请注意,无法使用space
或aspect.ratio
解决此问题选项。
答案 0 :(得分:2)
我不知道直接在构面系统中执行此操作的任何选项(除非您深入研究自定义构面),但是使用旧的“看不见的盒子”技巧很容易实现。基本上,您只需确保每个面板都有一个不可见的框,即可在y均值组的上方和下方绘制一个固定值,并在x均值的两侧绘制一个固定的距离:
ggplot(within(mtcars, {
split <- rowSums(sapply(c(.3,.5,.6),
function(x) disp > quantile(disp, x)) %*% (1:3));
mins <- ave(hp, split) - 100;
maxs <- ave(hp, split) + 100;
minx <- ave(mpg, split) -8;
maxx <- ave(mpg, split) +8;
}),
aes(mpg, hp)) +
geom_point() +
geom_rect(aes(xmin = minx, xmax = maxx, ymin = mins, ymax = maxs),
alpha = 0, colour = "#00000000") +
stat_smooth(method='lm', se=F) +
facet_wrap(~split, scales = 'free')
您可以看到在所有4个图上比例尺的大小都相同,但是每个点簇都以其x均值和y均值在图的中点居中。