这是一个场景示例:
df<-data.frame(t=1:8, V=c(1:4,seq(40,46, 2)), C1=rep(c('A','B'), 4), C2=rep(c('C','D'), c(4,4)))
这会产生以下数据框:
t V C1 C2
1 1 1 A C
2 2 2 B C
3 3 3 A C
4 4 4 B C
5 5 40 A D
6 6 42 B D
7 7 44 A D
8 8 46 B D
我想绘制 V 与 t 的关系图,并通过 C1 和 C2 拆分小平面。我希望每个方面的 max(V)-min(V) 相同,但 max(V) 和 min(V) 会有所不同,具体取决于每行图的数据范围。这是我到目前为止的位置:
ggplot(data=df) + geom_point(aes(x=t, y=V)) + facet_grid(C2~C1)
max(V)-min(V) 大小相同,大量 y 轴被浪费,每个面板中的额外范围掩盖了趋势。另一种选择是:
ggplot(data=df) + geom_point(aes(x=t, y=V)) + facet_grid(C2~C1, scales='free_y')
在这种情况下,max(V)-min(V) = {第一行图为 6,第二行图为 3}。
也没有办法为每一行指定限制,就像我们可以在 lattice 中通过将包含每个面板范围的列表传递给 ylim 参数来做的那样。
最佳答案
您可以将 space="free_y"
添加到 facet_grid()
以确保每行的值之间的间距相同。
ggplot(data=df) + geom_point(aes(x=t, y=V)) +
facet_grid(C2~C1, scales='free_y',space="free_y")
关于r - 如何使 ggplot2 中每个方面的 y 轴比例相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20585077/