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

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


Me contesto yo mismo , porque he encontrado la solución.
El truco es el parámetro position de geom_bar.  Pongo el gráfico con un 
poco de "customizado".

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

p <- ggplot(data=datos ,aes(x=comunidad, y=value))
p + geom_bar(stat = "identity", aes(fill=variable), position = "identity") +
   scale_y_continuous(name=" ") +
   scale_fill_brewer(palette="Dark2", type="qual" ,name=" 
",labels=c("Españoles","Extranjeros")) +
   theme(axis.text.x = element_text(size=rel(1.1),color="black",angle=90))



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