2013-06-26 19 views
13

ggplot2でいくつかのバイオリンプロットを描きたいと思いますが、中央値と第1四分位点と第3四分位点は自動的に表示されません。私は、これらのプロットがこの情報を用いてより有益であると信じています。誰かがそれを行う方法を知っていますか?ggplot2のバイオリンプロットの中央値と四分位

答えて

19

まず、このスタックオーバーフローpostはあなたが上の中央値をプロットするstat_summary(fun.y="median", geom="point")を追加できることを示している。ここアイリスデータとの例ですバイオリンプロットをポイントとして。

クォータイルに関しては、上記のfun.y引数の関数を書く必要があります(hereを参照)。例えば:

median.quartile <- function(x){ 
    out <- quantile(x, probs = c(0.25,0.5,0.75)) 
    names(out) <- c("ymin","y","ymax") 
    return(out) 
} 

完全なコードは次のようになります。

require(ggplot2) 

median.quartile <- function(x){ 
    out <- quantile(x, probs = c(0.25,0.5,0.75)) 
    names(out) <- c("ymin","y","ymax") 
    return(out) 
} 

ggplot(iris,aes(Species,Sepal.Length))+ 
    geom_violin()+ 
    stat_summary(fun.y=median.quartile,geom='point') 
+0

ありがとう、アイリスの例の@spdickson。 – jflournoy

+0

ありがとうございます、あなたのソリューションは正常に動作しています! – Martombo

33

これを行う1つの方法は、薄いボックスプロットを上に置くことです。私はGoogle検索からこれを発見し

require(ggplot2) 
ggplot(iris,aes(Species,Sepal.Length))+geom_violin()+geom_boxplot(width=.1) 

enter image description here

+2

ブリリアント - 私はこれが大好きです。 –

1

geom_violinあなたは含める分位数を指定することができます引数draw_quantilesを持っています。虹彩の第1、第2、第3四分位の例を以下に示します。

require(ggplot2) 
ggplot(iris, aes(Species, Sepal.Length)) + 
geom_violin(draw_quantiles = c(0.25, 0.5, 0.75)) 
関連する問題