Supponiamo ad es. Voglio ombreggiare l'area sotto la curva di densità per la distribuzione normale standard per decile. Voglio che il 10% più a sinistra dell'area abbia un'ombra diversa per il 10% successivo e così via.Area ombreggiata (riempimento o colore) sotto la curva di densità di quantile
Si tratta di una variante per le domande "Shading a kernel density plot between two points" e "ggplot2 shade area under density curve by group", ma voglio ombra ogni quantile (nel mio esempio, ogni gruppo è un decile ma il processo dovrebbe facilmente generalizzare ad altri quantili).
Non mi importa se una soluzione utilizza la grafica ggplot2
o base
e se questa viene eseguita direttamente da una formula (che sarebbe davvero accurata) o basata sulla creazione di un frame di dati prima. In quest'ultimo caso, si consiglia:
delta <- 0.0001
z.df <- data.frame(x = seq(from=-3, to=3, by=delta))
z.df$pdf <- dnorm(z.df$x)
z.df$decile <- floor(10*pnorm(z.df$x) + 1)
nota che la soluzione ingenua ggplot(z.df, aes(x = x, fill = quantile)) + geom_ribbon(aes(ymin = 0, ymax = pdf))
fallirebbe perché Aesthetics can not vary with a ribbon
.
Questo è veramente bello. "L'estetica non può variare con un nastro" è uno dei messaggi di errore più informativi che ho avuto da ggplot, un peccato che fosse fuorviante! – Silverfish