web-dev-qa-db-ja.com

ggplot2のバイオリン図の中央値と四分位数

Ggplot2でいくつかのバイオリン図を描きたいのですが、中央値と1番目と3番目の四分位数が自動的に表示されないことに気付きました。これらのプロットは、この情報を使用するとはるかに有益になると思います。誰かがそれを行う方法を知っていますか?

20
Martombo

私はグーグル検索からこれを発見しました:

まず、このStack Overflow post は、stat_summary(fun.y="median", geom="point")を追加して、バイオリン図の中央値を点としてプロットできることを示しています。

四分位数に関しては、 here で示されているように、上記のfun.y引数に対して独自の関数を作成する必要があります。例えば。:

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')
23
jflournoy

これを行う1つの方法は、その上に薄い箱ひげ図を配置することです。アイリスデータの例を次に示します。

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

enter image description here

41
Sam Dickson

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))

enter image description here

17
jdbcode