2012-11-27 218 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