5

次のコード:

library(ggplot2)
theData <- data.frame(category <- sample(LETTERS[1:3], 1000, replace = T),
                  value <- rnorm(1000))
thePlot <- ggplot(theData,
              aes(x = category, y = value))
thePlot <- thePlot + geom_violin(fill = "BLACK")
thePlot <- thePlot + coord_flip()
print(thePlot)

このプロットを生成します:

ヴァイオリンプロットの例

しかし、各バイオリン密度の塗りつぶし (および理想的には色) のアルファ値が密度の低い領域で減少する効果を実現したいと考えています。つまり、バイオリンの形状は、曲線の高さが小さい場所では背景にフェードインしますが、曲線の高い場所では暗く不透明になります。このタイプの効果のようなもの:

アルファ フェードの例

残念ながら、これらの係数プロットはかなり醜いハックを使用して作成されており、新しい geom_violin の柔軟性を考えると、geom_violin を使用してこのアルファ フェードを実装する簡単な方法があるかどうか疑問に思っています。

あなたが提供できる洞察をありがとう!

4

2 に答える 2

3

@wchの答えに触発されて、私はこれに別のクラックを取ることにしました. これは私が得たのと同じくらい近かった:

ggplot(theData, aes(x = category, y = value)) +
    stat_ydensity(geom="segment", aes(xend=..x..+..scaled../2, 
        yend=..y.., alpha=..scaled..), size=2, trim=FALSE) +
    stat_ydensity(geom="segment", aes(xend=..x..-..scaled../2, 
        yend=..y.., alpha=..scaled..), size=2, trim=FALSE) +
    scale_alpha_continuous(range= c(0, 1)) +
    coord_flip() + theme_bw()

ここに画像の説明を入力

の以前のバージョンでggplot2は、プロットに「バンド」が表示されていましたが、この問題は修正されたようです。

ここに画像の説明を入力

于 2012-06-11T17:06:03.443 に答える