1

要因ごとにボックスプロットを並べて作成しようとすると問題が発生します。いくつかの例を読みましたが、何らかの理由でプロットが正しく表示されません。因子として指定したにもかかわらず、各値の箱ひげ図をプロットしようとしていると思います。

私は次のコードを使用しています:

samp.norm = rnorm(1000,0,1)
samp.exp  = rexp(1000,1)
samp.unif = runif(1000)
samp = c(samp.norm,samp.exp,samp.unif)
dist = c( rep("norm",1000), rep("exp",1000), rep("unif",1000) )
DATA = as.data.frame(cbind(samp,dist))
DATA$dist= as.factor(DATA$dist)
p = ggplot(DATA, aes(x=factor(DATA$dist), y = DATA$samp)) + geom_boxplot()
p
4

2 に答える 2

3

問題は、cbind()DATA$samp が数値ではなく因数になるように、結果のオブジェクトを強制的に使用することです。cbind から生成される列は、同じクラスを持つ必要があります。つまり、この場合の「文字」では、最も低い共通のデモニネーター クラスになります。これはまさに、データ フレームが解決するために発明されたものです。

試す

DATA=data.frame(samp,dist) 

あなたが持っているより複雑な行の代わりに、それはすべてうまくいくはずです。

余談ですが、もっと単純なものも必要です

p=ggplot(DATA, aes(x=dist, y = samp)) + geom_boxplot()

最後から2番目の行ではなく。DATA を使用していることを ggplot() に指定したら、dist と samp を見つける場所を指定する必要はありません。つまり、DATA$dist は必要ありません。dist だけです。また、dist は既に factor であるため、factor(dist) を指定する必要はありません。

于 2012-11-20T01:39:50.497 に答える
0

@PeterEllisに+1。次の方法で、彼の提案よりもさらに簡単にすることもできることに注意してください。

boxplot(samp~dist)

ここに画像の説明を入力

于 2012-11-20T02:25:55.453 に答える