【发布时间】:2014-01-02 07:38:21
【问题描述】:
这是一个场景示例:
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) = {第 1 行图为 6,第 2 行图为 3}。
也没有办法为每一行指定限制,就像我们可以在 lattice 中通过将一个包含范围的列表传递给每个面板到 ylim 参数来做的那样。
【问题讨论】: