2010-11-05 50 views

回答

5

據我所知,這還沒有在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) 
相關問題