Подтвердить что ты не робот

Медиана и квартиль на скрипке в ggplot2

Я хотел бы сделать несколько скрипичных графиков с ggplot2, но я заметил, что медианный и первый и третий квартили не отображаются автоматически. Я считаю, что эти сюжеты были бы более информативными с этой информацией. Кто-нибудь знает, как это сделать?

4b9b3361

Ответ 1

Я обнаружил это из поиска google:

Во-первых, это переполнение стека post указывает, что вы можете добавить stat_summary(fun.y="median", geom="point") для построения медианы на графике скрипки в качестве точки.

Что касается квартилей, вам, скорее всего, придется написать свою собственную функцию для аргумента 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')

Ответ 2

Один из способов сделать это - просто наложить тонкую коробку на верхнюю часть. Вот пример с данными диафрагмы:

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

enter image description here

Ответ 3

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