5

私はこのデータから箱ひげ図をプロットしています:

MY_LABEL     MY_REAL     MY_CATEGORY
1 [POS]       .56            POS
1 [POS]       .57            POS
1 [POS]       .37            POS
2 [POS]       .51            POS
1 [sim v]     .65            sim v
...

私はggplot2を使用しています:

ggplot( data=myDF, aes( x=MY_LABEL, y=MY_REAL, fill=MY_CATEGORY ) ) +
    scale_colour_manual( values=palette ) +
    coord_flip() + 
    geom_boxplot( outlier.size = 0 )

これは正常に機能し、箱ひげ図をフィールドごとにグループ化しますMY_CATEGORYここに画像の説明を入力してください

私は2つのことをしたいです:

1)このプロットの明瞭さを向上させるために、さまざまなブロックの間にセパレーターを追加したいと思います。つまり、POSとの間、とのsim v間などです(プロットの醜い赤い線を参照してください)。私は運がなくて苦労してきました。または、ブロック間に空白を追加したいと思います。sim vCgeom_vline

2)このプロットをグレースケールで印刷すると、異なるブロックを区別できません。私は別のパレットを強制しようとしています:

scale_colour_manual( values=c("black","darkgray","gray","white") )

繰り返しますが、運が悪いので、プロットはまったく変わりません。

あなたは何をすることを提案しますか?

4

3 に答える 3

7

これはあなたのために働きますか?

require(ggplot2)
mtcars$cyl2<- ifelse(mtcars$cyl > 4, c('A'), c('B')) 
p <- ggplot(mtcars, aes(factor(cyl), mpg))
p + geom_boxplot() + facet_grid(. ~ cyl2, scales = "free", space = "free")

このようなものを与えるだろう、 bbb

于 2012-06-26T21:26:17.500 に答える
6

横線のルートは誰もカバーしていなかったので、追加したいと思いました。なぜgeom_vline()あなたのために働いていなかったのかわかりません。これが私がしたことです(EricFailのアプローチからプレーオフすることを選択しました):

require(ggplot2)
p <- ggplot(mtcars, aes(factor(cyl), mpg))
p <- p + geom_boxplot(aes(fill=factor(cyl))) + coord_flip()
p <- p + geom_vline(xintercept=c(1.5,2.5))
p

ここには箱ひげ図が3つしかありませんが、遊んでみると、ggplotはそれらを整数の位置に配置しているように見えます。(n番目)の後に行が必要なボックスを見つけて、その行のxintercept引数を配置するだけn+0.5です。厚さと色はお好みに合わせて変更できます。xinterceptビットの後にsize=widthとを追加するだけです。colour="name"

ちなみに、geom_vline()前後に関わらず、うまくいくようですcoord_flip()。私はそれが直感に反していると思います。


カテゴリ名と一致する名前が必要であるというbdemarestが正しいかどうかはわかりません。問題は、を使用したことだと思います。これは、を使用したときに使用scale_colour_manual()した場合に適用さaes(..., colour=var)れますfill=var。したがって、が必要scale_fill_manualです。上記に基づいて、次を追加できます。

p <- p + scale_fill_manual(values=c("black","gray","white"))
p

一致する色の要素名を定義していないことに注意してください。色は、順序に従ってファクターレベルに単純に適用されると思いますが、間違っている可能性があります。


上記のすべての最終結果:

シリンダー箱ひげ図

于 2012-06-26T23:33:35.803 に答える
1

塗りつぶしの色を変更するには、名前付きの値のベクトルが必要です。名前は、y軸のカテゴリ名と完全に一致する必要があります。

scale_fill_manual(values=c("POS"="black", "sim v"="gray50",
                           "C"="gray80", "sim t"="white"))

y軸のカテゴリを分離するには、を試してくださいfacet_grid()

facet_grid(factor(MY_CATEGORY) ~ ., drop=TRUE)

テストするデータがないため、これが機能するかどうかはわかりません。

于 2012-06-26T21:36:47.400 に答える