除非你希望减少绘图区域(即不绘制某些点),否则在使用 scales = "free_y"
的同时,仍然可以对 y 轴限制进行 "完全" 控制。
您可以使用我给出的相同技巧来回答您的其他问题:如何设置圆角分面包装 y 轴的限制?
dat <- data.table(dat)
dat[,y_min := y*0.5, by = group]
dat[,y_max:= y*1.5, by = group]
ggplot(dat, aes(x = x, y = y)) +
geom_point() +
geom_line() +
facet_wrap(~group, ncol = 1, scales = "free_y") +
geom_blank(aes(y = y_min)) +
geom_blank(aes(y = y_max))
对于其他阅读此问题的人,诀窍在于为每个组显式创建y_min
和y_max
变量。然后通过geom_blank()
绘制它们。(实际上没有绘制任何内容,但是每个facet的绘图区域根据该组的y_min
和y_max
值进行调整)。
如果出于某些原因,您希望手动提供最小值和最大值(而不是使用规则),则没有任何限制。但这很繁琐:
dat[group == "a",y_min := 0]
dat[group == "a",y_max := 30]
dat[group == "b",y_min := 0]
dat[group == "b",y_max := 3000]
ggplot(dat, aes(x = x, y = y)) +
geom_point() +
geom_line() +
facet_wrap(~group, ncol = 1, scales = "free_y") +
geom_blank(aes(y = y_min)) +
geom_blank(aes(y = y_max))
但是,正如我所提到的,这只适用于想要扩展自己极限的人,而不是减少它们。
![enter image description here](https://istack.dev59.com/2G0V1.webp)
gridExtra
包和单独的绘图来实现。 - mtoto