[R-es] Gráfico de barras positivas y negativas con ggplot2

José Luis Cañadas Reche canadasreche en gmail.com
Jue Mar 7 13:18:28 CET 2013


Hola a todos.

Tengo los siguientes datos

datos <- structure(list(comunidad = structure(c(1L, 2L, 3L, 4L, 5L, 6L,
8L, 7L, 9L, 11L, 12L, 13L, 14L, 16L, 17L, 18L, 19L, 10L, 15L,
1L, 2L, 3L, 4L, 5L, 6L, 8L, 7L, 9L, 11L, 12L, 13L, 14L, 16L,
17L, 18L, 19L, 10L, 15L), .Label = c("Andalucía"   , "Aragón"   ,
"Asturias ", "Baleares ", "Canarias", "Cantabria", "Castilla - La Mancha",
"Castilla y León"   , "Cataluña"   , "Ceuta ", "C. Valenciana",
"Extremadura", "Galicia", "Madrid ", "Melilla", "Murcia", "Navarra ",
"País Vasco"   , "Rioja (La)"), class = "factor"), variable = 
structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L), .Label = c("esp", "ext"), class = "factor"),
     value = c(8928L, 1256L, -4555L, 6567L, -12257L, 421L, -13078L,
     3240L, 30363L, 9846L, -2059L, -15639L, 61411L, 6850L, 4492L,
     1849L, 569L, 758L, 1095L, 16955L, 1918L, 428L, -242L, 3832L,
     319L, 693L, 3314L, 927L, 2230L, 822L, 1715L, -52531L, -2470L,
     -1977L, 6638L, 85L, 884L, 1231L)), .Names = c("comunidad",
"variable", "value"), row.names = c(NA, -38L), class = "data.frame")

Y quiero hacer un gráfico de barras con ggplot2 de forma que, por 
ejemplo para Madrid, tenga la barra de esp con valores positivos y la de 
ext con valores negativos.

He probado con el siguiente código

library(ggplot2)

p <- ggplot(data=datos,aes(x=comunidad,y=value))
p + geom_bar(stat = "identity",aes(fill=variable))


Cuando los valores de esp y ext  son los dos del mismo signo en una 
comunidad , si salen bien las barras, pero no si son distintos.
También salen unos cuantos warnings , entre ellos el que creo que da la 
clave.
Mensajes de aviso perdidos
Stacking not well defined when ymin != 0

¿alguna idea de cómo puedo conseguirlo?

Gracias



Más información sobre la lista de distribución R-help-es