2012-11-27 161 views
3

简而言之: 我想有用于每个的双面板情节“面板”单独使用图例造facet_wrap。使用facet_wrap(scales="free")适用于当我想要不同的轴比例时,但不适用于点的大小。facet_wrap和缩放点大小

背景: 我具有与每个三次测量几个样品的数据:Xÿ,和ž。每个样品来自1级或2级。xy在每个类别中具有相同的分布。然而,1级的所有测量结果都小于1.0; ž测量类2范围从0到100

当我卡:在x轴和y轴 剧情Xÿ,分别。使每个点的面积与其值成正比。

d = matrix(c(runif(100),runif(20)*100),ncol=3) 
e = data.frame(gl(2,20), d) 
colnames(e) = c("class","x","y","z") 
ggplot(data = e, aes(x=x, y=y, size=z)) + 
    geom_point() + scale_area() + 
    facet_wrap(~ class, ncol=1, scales="free") 

enter image description here

问题: 注意,第一面板上的点是很难看到,因为它们在用于取值范围为0到单个图例标度的非常低的端100.是否有可能有两个独立的传说(每个传说都有不同的范围),还是应该制作两个地块并将它们与视口相结合?

+0

这将是不可能的。这是'ggplot2'的一个设计特性。使用'gridExtra'和'grid.arrange'来代替'facet_wrap' – mnel

+2

@mnel说一些不可能的事情就是让kohske去展示和展示别的东西。这就是说,我同意'grid.arrange'显然是正确的道路。 – joran

回答

5

使用grid.arrange的解决方案。我已致电facet_wrap,因此strip.text仍然存在。你可以很容易地删除这个。

# plot for class 1 
c1 <- ggplot(e[e$class==1,], aes(x=x,y=y,size=z)) + geom_point() + scale_area() + facet_wrap(~class) 
# plot for class 2 
c2 <- c1 %+% e[e$class==2,] 

library(gridExtra) 

grid.arrange(c1,c2, ncol=1) 

enter image description here

+0

谢谢!根据其他意见,使用facet_wrap是不可能的,我可以理解为什么。太多的传说很容易变得太混乱。我将使用视口和grid.arrange来解决我的问题。感谢大家。 – kdauria

+0

'facet_wrap'在这里工作,但只在数据的一个子集上。我保留它的唯一原因是保留'strip.titles'每个情节是一个有一个方面的多面情节。 – mnel