He estado luchando con cómo hacer un Pareto Chart en R usando el paquete ggplot2. En muchos casos, al hacer un gráfico de barras o un histograma, queremos elementos ordenados por el eje X. En un gráfico de Pareto, queremos los artículos ordenados descendiendo por el valor en el eje Y. ¿Hay alguna manera de hacer ggplot para trazar elementos ordenados por el valor en el eje Y? Intenté ordenar primero el marco de datos, pero parece que ggplot los reordena.Creando un gráfico de Pareto con ggplot2 y R
Ejemplo:
val <- read.csv("http://www.cerebralmastication.com/wp-content/uploads/2009/11/val.txt")
val<-with(val, val[order(-Value), ])
p <- ggplot(val)
p + geom_bar(aes(State, Value, fill=variable), stat = "identity", position="dodge") + scale_fill_brewer(palette = "Set1")
el val trama de datos está ordenada, pero la salida es el siguiente:
alt text http://www.cerebralmastication.com/wp-content/uploads/2009/11/exp.png
Hadley señaló correctamente que esto produce una mejor gráfica para mostrar los datos reales vs. . Predicho:
ggplot(val, aes(State, Value)) + geom_bar(stat = "identity", subset = .(variable == "estimate"), fill = "grey70") + geom_crossbar(aes(ymin = Value, ymax = Value), subset = .(variable == "actual"))
que devuelve:
alt text http://www.cerebralmastication.com/wp-content/uploads/2009/11/exp1.png
Pero todavía no es un diagrama de Pareto. ¿Algun consejo?
Usted puede hacer esto con los gráficos de base utilizando el par (nuevo) truco de overplotting - mismos principios que para el 'gráfico con dos ejes Y' habitual problema. Ggplot2 No puedo ayudarlo (sin embargo, un día tal vez tenga tiempo para ponerme al día). –
Me cuesta tanto evitar el aprendizaje de gráficos básicos. Soy fantásticamente vago :) –