2012-02-12 50 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)) 
相关问题