2016-12-20 3 views
0

その因子の組み合わせのデータがないので、下の私のプロットからファセットの2番目の行を削除します。未使用の因子レベルの組み合わせのファセットの行全体を削除する

library(ggplot2) 
library(grid) 
set.seed(5000) 

# generate first df 
df1 = data.frame(x=rep(rep(seq(2,8,2),4),6), 
       y=rep(rep(seq(2,8,2),each=4),6), 
       v1=c(rep("x1",32),rep("x2",64)), 
       v2=c(rep("y1",64),rep("y2",32)), 
       v3=rep(rep(c("t1","t2"),each=16),3), 
       v4=rbinom(96,1,0.5)) 

# generate second df 
df2 = data.frame(x=runif(20)*10, y=runif(20)*10, 
       v1=sample(c("x1","x2"),20,T)) 

# plot 
ggplot() + 
    geom_point(data=df1, aes(x=x, y=y, colour = factor(v4)), shape=15, size=5) + 
    scale_colour_manual(values = c(NA,"black")) + facet_grid(v1+v2~v3, drop = T) + 
    geom_point(data=df2, aes(x=x,y=y), shape=23 , colour="black", fill="white", size=4) + 
    coord_equal(ratio=1) + xlim(0, 10) + ylim(0, 10) 

私はこれを得た..but

g=ggplotGrob(y) 
pos=which(g$layout$t==5 | g$layout$t==6) 
g$layout=g$layout[-c(pos),] 
g$grobs=g$grobs[-c(pos)] 
grid.newpage() 
grid.draw(g) 

.. thisポストからのアイデアを使用しようとしました。

どのように私はホワイトスペースを排除していますか?また、grobsなどを操作することなく、これに簡単な解決策がありますか?

+2

は、簡単にデータをサブセットし、最初の場所でそれらのパネルをプロットしないことではないでしょうか? – baptiste

+0

@baptiste私のデータフレームには、私が排除できる余分なものは何もありません。ですから、私は別々のプロットを作成し、それらを 'grid.arrange()'またはそれに類するものと一緒に置くことを提案していますか? – zoneparser

答えて

2

だけでデータを変更します。

df2 <- rbind(cbind(df2, v2 = "y1"), 
      cbind(df2, v2 = "y2")) 
df2 <- df2[!(df2$v1 == "x1" & df2$v2 == "y2"),] 

# plot 
ggplot() + 
    geom_point(data=df1, aes(x=x, y=y, colour = factor(v4)), shape=15, size=5) + 
    scale_colour_manual(values = c(NA,"black")) + facet_grid(v1+v2~v3, drop = T) + 
    geom_point(data=df2, aes(x=x,y=y), shape=23 , colour="black", fill="white", size=4) + 
    coord_equal(ratio=1) + xlim(0, 10) + ylim(0, 10) 

resulting plot

+0

これは動作しますが、何が起こっているのかわかりません!私は実際のデータセットのために私の頭の中を包み込む必要があります。ありがとう@ローランド。私が 'y1'、 'y2'、 'y3'を持っていた場合、それをどのように拡張するかについての簡単な考えはありますか? – zoneparser

+0

df2 < - df2 [!(df2 $ v1 == "x1"&df2 $ v2 == "y2")|(df2 $ v1 == "x1"&df2 $ v2 == "y3" ))、] ' – zoneparser

関連する問題