10

で作成した素敵な facet_wrap 密度プロットがありggplot2ます。各パネルに、左側に y 軸ラベル、下部に x ラベルだけを配置するのではなく、x 軸と y 軸のラベルを配置したいと考えています。私が今持っているものは次のようになります:

library(ggplot2)
myGroups <- sample(c("Mo", "Larry", "Curly"), 100, replace=T)
myValues <- rnorm(300)
df <- data.frame(myGroups, myValues)


p <- ggplot(df)  + 
  geom_density(aes(myValues), fill = alpha("#335785", .6)) + 
  facet_wrap(~ myGroups)
p

どちらが返されますか:

代替テキスト
(出典:cerebralmastication.com

これは単純なように思えますが、私の Google Fu は貧弱すぎて答えを見つけることができませんでした。

4

2 に答える 2

13

これを行うには、facet_wrap 呼び出しに scales="free" オプションを含めます。

myGroups <- sample(c("Mo", "Larry", "Curly"), 100, replace=T)
myValues <- rnorm(300)
df <- data.frame(myGroups, myValues)


p <- ggplot(df)  + 
  geom_density(aes(myValues), fill = alpha("#335785", .6)) + 
  facet_wrap(~ myGroups, scales="free")
p

ここに画像の説明を入力

于 2011-05-19T05:26:00.717 に答える
8

簡単な答え: それはできません。3 つのグラフでは意味があるかもしれませんが、32 個のグラフの大きなラティスがある場合はどうなるでしょうか? それはうるさくて悪いように見えます。GGplot の哲学は、最小限のカスタマイズで正しいことを行うことです。つまり、当然のことながら、他のパッケージほど多くのものをカスタマイズすることはできません。

長い答え: 3 つの個別の ggplot オブジェクトを作成し、それらを組み合わせることで、それを偽造することができます。しかし、それは非常に一般的な解決策ではありません。ggplot オブジェクト a、b、および c を作成したと仮定した Hadley の本からのコードを次に示します。a を一番上の行に、b と c を一番下の行に配置します。

grid.newpage()
pushViewport(viewport(layout=grid.layout(2,2)))
vplayout<-function(x,y)
    viewport(layout.pos.row=x,layout.pos.col=y)
print(a,vp=vplayout(1,1:2))
print(b,vp=vplayout(2,1))
print(c,vp=vplayout(2,2))
于 2009-10-07T16:16:29.560 に答える