5

私はfacet_gridかなり好きで、よく と一緒に使っていgeom_histogramます。margins=foo集約されたグループと比較してすべての分布を確認できるという点でも、この議論が気に入っています。問題は、margin 引数を含めると、すべてのグループが引き伸ばされて、通常ははるかに広い範囲のマージンの y スケールを満たすようになるため、すべてのデータが得られることです。これは、集約されたすべてのグループの y スケールがはるかに広くなり、グループ間の違いを見つけるのが難しくなることを意味します。だから私は自分自身に言います、:self は scales 引数でこれを修正でき、y が変化できるようにすることができます。余白を自由にしますが、スケールが自由ではないかのように他のすべてを制限します。

ここにコードと写真を示して、私が何を意味するかを示します。これが明確でない場合は、質問してください。

#create some data
set.seed(10)
dat <- data.frame(var1=rpois(1000, 20), 
   var2=as.factor(sample(LETTERS[1:4], 1000, replace=T)),
   var3=as.factor(sample(month.abb[1:5], 1000, replace=T)))

ggplot(dat, aes(var1)) + 
geom_histogram() + 
facet_grid(var2~var3)

これがそのプロットです。yスケールが同じであるため、すべての集計スコアを簡単に比較できるという点で気に入っています。しかし、比較のためにマージンや分解されたヒストグラムもあると便利ではないでしょうか。

ここに画像の説明を入力

ggplot(dat, aes(var1)) + 
geom_histogram() + 
facet_grid(var2~var3, margins='var2')

引数を入れてmargins比較できるようになりましたが、集計されたグループ ヒストグラムはすべて 20 に引き伸ばされており、比較が難しくなっています (下の画像を参照)。scalesでは、自由に設定しましょう。 この例は、私が使用したサンプリング方法でデータがかなり均等に分散されているため、ひどいものではありませんが、実際には、いくつかのセルには少数のカウントしかなく、他のセルには多くのカウントがあり、比較はさらに悪いです

ここに画像の説明を入力

ggplot(dat, aes(var1)) + 
geom_histogram() + 
facet_grid(var2~var3, margins='var2', scales="free_y")

これが、スケールを解放したプロットです。問題は、それらが実際に集計されたスコアに対しても無料であり、それらを比較するのに問題があることです (1 つは 14 位、1 つは 8 位、もう 1 つは 7 位です)。

ここに画像の説明を入力

marginsでは、 だけを自由にする方法はありますか? 基本的に私が望むのは、作成された最初の図を取り、2 番目の図から余白をスプライスすることです。

4

1 に答える 1

1

その間、この回避策は機能しますか? 見出しが繰り返されていますが、x スケールとラベルは削除できます。

require(ggplot2)
require(gridExtra)
set.seed(10)
dat <- data.frame(var1=rpois(1000, 20), 
                  var2=as.factor(sample(LETTERS[1:4], 1000, replace=T)),
                  var3=as.factor(sample(month.abb[1:5], 1000, replace=T)))
dat$var4 <- "All"

windows(width=8, height=8)

p1 <- ggplot(dat, aes(var1)) + 
  geom_histogram() + 
  facet_grid(var2~var3) +


p2 <- ggplot(dat, aes(var1)) + 
  geom_histogram() + 
  facet_grid(~var3)


grid.arrange(p1, p2, nrow=2, heights=c(4,1.5))

ここに画像の説明を入力

を使用して最初のプロットから x スケールとラベルを削除する方法は、おそらく既にご存じでしょうscale_x_continuous('', breaks = NA)

于 2012-07-26T01:52:34.713 に答える