2016-10-24 9 views
2

ggplotとfacet_gridを使っていくつかのプロットを作成し、そのプロットをオブジェクトとして保存します。私の問題は、各サブグループ(すなわち、各ファセット)を個別にオブジェクトとして保存したいということです。私の質問は、facet_gridから単一のファセットを抽出してオブジェクトとして保存できるかどうかです。ここではいくつかの簡単なコードは次のとおりです。facet_gridを使ってggplotから1つのプロットを抽出する

library(ggplot2) 

ggplot(data = mtcars, aes(x = disp, y = mpg)) + 
    geom_point() + 
    facet_grid(. ~ am) 

今、私は2つのオブジェクトを生成したいのですが - am=0用とam=1ための1つを。

答えて

3

サブセットを使用しない理由はわかりませんが、ファセットグリッドから個々のファセットを抽出できます。

library(ggplot2) 
library(grid) 
library(gtable) 

p1 = ggplot(data = mtcars, aes(x = disp, y = mpg)) + 
    geom_point() + 
    facet_grid(. ~ am) 


g1 = ggplotGrob(p1) 


# Rows and columns can be dropped from the layout. 

# To show the layout: 
gtable_show_layout(g1) 

# Which columns (and/or rows) to drop? 
# In this case drop columns 5 and 6 to leave am = 0 plot 
# Drop columns 4 and 5 to leave am = 1 plot 

# am = 0 plot 
g1_am0 = g1[,-c(5,6)] 

grid.newpage() 
grid.draw(g1_am0) 


# am = 1 plot 
g1_am1 = g1[,-c(4,5)] 

grid.newpage() 
grid.draw(g1_am1) 
1

データをサブセット化してファセットコマンドを削除することができます。

ggplot(data = subset(mtcars,am==0), aes(x = disp, y = mpg)) + 
    geom_point() 

ggplot(data = subset(mtcars,am==1), aes(x = disp, y = mpg)) + 
    geom_point() 

私はオブジェクトとして保存することについてあなたの質問に答えなかったことを実感しました。 ggplotコードの前に は、行を追加します。

tiff(file="firstfolder from working dir/next folder/ name.tiff",units="in",width=5,height=6,res=72) 

あなたがもう一度あなたのコンピュータ画面にスタッフプリントを見にプロットコードの後dev.off()を追加する必要があります。

さまざまな形式でpng、pdfなどを使用できます。

RStudioを使用している場合は、プロットウィンドウから手動でエクスポートすることができます。上のエクスポートボタンを参照してください。

+0

ありがとうございます!私は実際に部分集合について知っていますが、facet_gridからプロットを抽出するだけのエレガントな方法があるのだろうかと思っていました。プロットは非常に洗練されており(したがって長いコード)、コードをできるだけシンプルに保つため、これは興味深いものです。 – ehi

+0

スナップショットまたはクロッピング以外の、私が@ehiを知っていること以外 – akaDrHouse

+0

スナップショットの問題は別のスケールとy軸ラベルはありません。 – ehi

関連する問題