2013-06-26 14 views
13

Vorrei disegnare alcuni grafici di violino con ggplot2, ma ho notato che la mediana e il primo e il terzo quartile non vengono visualizzati automaticamente. Credo che queste trame sarebbero molto più istruttive con queste informazioni. Qualcuno sa di un modo per farlo?Mediano e quartile su grafici di violini in ggplot2

risposta

19

ho scoperto questo da una ricerca su Google:

In primo luogo, questo Stack Overflow post indica che è possibile aggiungere stat_summary(fun.y="median", geom="point") per tracciare la mediana su un trama di violino come punto.

Per quanto riguarda i quartili, sarà probabilmente necessario scrivere la propria funzione per l'argomento fun.y sopra, come dimostrato su here. Es .:

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

Il codice completo potrebbe assomigliare a questo:

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

Grazie, @spdickson per l'esempio di diaframma. – jflournoy

+0

grazie, la soluzione sta funzionando bene! – Martombo

33

Un modo per fare questo è semplicemente mettere una trama sottile scatola sopra la parte superiore di esso. Ecco un esempio con i dati dell'iride:

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

enter image description here

+2

Brillante: mi piace molto. –

1

geom_violin ha un argomento draw_quantiles che consente di specificare quali quantili da includere. Ecco un esempio di 1 °, 2 ° e 3 ° quartile sull'iride.

require(ggplot2) 
ggplot(iris, aes(Species, Sepal.Length)) + 
geom_violin(draw_quantiles = c(0.25, 0.5, 0.75)) 
Problemi correlati