2012-02-12 111 views
1

facet_gridGGPLOT2自動定義了將在Y軸上顯示的值的範圍。如果使用scale = "free_y",值的範圍可能會因方面而有所不同。是否有可能定義特定刻面的Y軸範圍爲顯示 - GGPLOT2

或者,用戶可以使用scale_y_continuous來定義他/她自己將在Y軸上顯示的值的範圍。但是在這種情況下,所有方面的範圍都是相同的。

我的問題是:是否有方法讓用戶定義面特定的Y軸範圍?

:讓我們假定該小面的變量需要2個值(A和B)和Y值的範圍A和20和100,用於B之間0 10之間並且有一種方法來指示GGPLOT2 A只顯示0到5之間的Y值,B顯示20到50之間的Y值?或者,更復雜的是,指示ggplot2顯示A的所有Y值(默認值),但只有20和50之間的B值?

With lattice,使用預製面板來定義面板特定的Y軸範圍是可能的。我想知道這是可能的ggplot2

PS:我當然不感興趣的是在運行圖之前選擇顯示Y值,但只在顯示時顯示。

回答

2

我不知道的方式告訴GGPLOT2做到這一點本身,但它不是太難僅僅通過子集化數據,實現自己同樣的效果:

#Sample data matching your description 
dat <- data.frame(x = runif(100), 
        y = c(runif(50,0,10),runif(50,20,100)), 
        grp = rep(LETTERS[1:2],each = 50)) 

#Plotting everything      
ggplot(dat) + 
    facet_wrap(~grp,scales = "free_y") + 
    geom_point(aes(x = x,y = y)) 

#Plotting only 0-5 in grp A, 20-50 in grp B  
ggplot(subset(dat,(grp == 'A' & y <= 5) | (grp == 'B' & y >= 20 & y <= 50))) + 
    facet_wrap(~grp,scales = "free_y") + 
    geom_point(aes(x = x,y = y)) 
相關問題