在以下示例中,如何爲每個方面設置單獨的ylims?如何控制ggplot2中具有不同比例的小平面圖的ylim?
qplot(x, value, data=df, geom=c("smooth")) + facet_grid(variable ~ ., scale="free_y")
在每個小面的,y軸取不同的值範圍,我希望爲每個小面的不同ylims。
默認值ylims對於我想要查看的趨勢來說太長。
在以下示例中,如何爲每個方面設置單獨的ylims?如何控制ggplot2中具有不同比例的小平面圖的ylim?
qplot(x, value, data=df, geom=c("smooth")) + facet_grid(variable ~ ., scale="free_y")
在每個小面的,y軸取不同的值範圍,我希望爲每個小面的不同ylims。
默認值ylims對於我想要查看的趨勢來說太長。
不久前,這是brought up on the ggplot2 mailing list。你所要求的是目前不可能的,但我認爲它正在進行中。
據我所知,這還沒有在ggplot2中實現。然而,一種解決方法 - 會讓你的ylims超過ggplot自動提供的ylims - 是添加「人造數據」。爲了減少yims,只需刪除你不想繪製的數據(參見上文和舉例)。
下面是一個例子:
我們剛剛成立,你要繪製
df <- data.frame(x=rep(seq(1,2,.1),4),f1=factor(rep(c("a","b"),each=22)),f2=factor(rep(c("x","y"),22)))
df <- within(df,y <- x^2)
其中我們可以陰謀使用線圖
p <- ggplot(df,aes(x,y))+geom_line()+facet_grid(f1~f2,scales="free_y")
print(p)
假設我們希望將一些虛擬數據讓y從第一行的-10開始,第二行的0開始,因此我們在(0,-10)向左上方的圖表添加一個點,並在(0,0)的左下方的圖形上添加一個點:
ylim <- data.frame(x=rep(0,2),y=c(-10,0),f1=factor(c("a","b")),f2=factor(c("x","y")))
dfy <- rbind(df,ylim)
現在,通過限制X標尺1和2的那些加入點之間不繪製(警告給出):
p <- ggplot(dfy,aes(x,y))+geom_line()+facet_grid(f1~f2,scales="free_y")+xlim(c(1,2))
print(p)
同樣由具有較高添加點用於延長上述的餘量將工作y值位於xlim範圍之外的x值。
,如果你想降低ylim,在這種情況下,子集化你的數據將是一個解決方案,這將無法正常工作,例如限制-10和1.5之間的上排,你可以使用:
p <- ggplot(dfy,aes(x,y))+geom_line(subset=.(y < 1.5 | f1 != "a"))+facet_grid(f1~f2,scales="free_y")+xlim(c(1,2))
print(p)
任何關於這個的消息?現在可能嗎? – Ignacio 2014-09-30 19:35:04