Últimamente he estado trasteando con ggplot2, una librería para generar gráficos muy interesante, basada en la gramática de gráficos. Por supuesto, también permite generar gráficos de mapas.

Os voy a poner un ejemplo con el mapa de Asturias.

* El mapa que utilizo es el de Asturias que me he descargado previamente de GADM. Lo he transformado como en el post sobre mapas con R.

* Los datos de los municipios los he descargado del Instituto nacional de estadística (INE), en el apartado de población de municipios. Y los he adaptado para que coincidan con los del mapa.

 

 

Aquí va el código:

library(ggplot2)
library(rgdal)

# Descargo los datos administrativos de GADM, me los guarda en una variable llamada gadm
load(url("http://gadm.org/data/rda/ESP_adm3.RData"))

# Me quedo con los datos de Asturias
asturias.adm3.spdf <- gadm[gadm$NAME_2=="Asturias",]

# Creo el data.frame a partir de los datos de GADM
asturias.adm3.df <- fortify(asturias.adm3.spdf, group="NAME_2")

# Genero datos de desempleo de forma aleatoria para cada id
desempleo.df <- data.frame(id= unique(asturias.adm3.df[,'id']), desempleo = runif(n = length(unique(asturias.adm3.df[,'id'])), min = 0, max = 25))

# Fusiono ambos data.frames
asturias.adm3.df <- merge(asturias.adm3.df, desempleo.df, by.y = 'id', all.x = TRUE)

# Obtengo las coordenadas para las etiquetas

asturias.adm3.centroids.df <- data.frame(long = coordinates(asturias.adm3.spdf)[, 1],
lat = coordinates(asturias.adm3.spdf)[, 2],
ID_2=asturias.adm3.spdf@data[,"ID_3"],
NAME_2=asturias.adm3.spdf@data[,'NAME_3'])

#Cambio codificación del texto de latin a utf-8 para que se muestren los acentos correctamente
asturias.adm3.centroids.df$NAME_2 <- as.factor(iconv(as.character(asturias.adm3.centroids.df$NAME_2), "latin1", "utf-8"))

#Asigno los nombres correctos de cada Área Sanitaria
levels(temp) <- list( "Area I"="Eo-Navia", "Área II"="n.a. (194)", "Área III"="Avilés", "Área IV"="Oviedo", "Área V"="n.a. (108)", "Área VI"="Oriente", "Área VII"="Caudal", "Área VIII"="n.a. (195)")

# Create ggplot with labels for administrative areas

p <- ggplot(asturias.adm3.df, aes(x = long, y = lat, group = group))
p <- p + geom_polygon(aes(fill = cut(desempleo,5)))
p <- p + geom_text(data = asturias.adm3.centroids.df, aes(label = NAME_2, x = long, y = lat, group = NAME_2), size = 3)
p <- p + labs(x=" ", y=" ")
p <- p + theme_bw()
p <- p + scale_fill_brewer('Tasa de Desempleo (Ene 2011)', palette = 'PuRd')
p <- p + coord_map()
p <- p + theme(panel.grid.minor=element_blank(), panel.grid.major=element_blank())
p <- p + theme(axis.ticks = element_blank(), axis.text.x = element_blank(), axis.text.y = element_blank())
p <- p + theme(panel.border = element_blank())

print(p)

Comentarios   

#2 Franz Jimeno 24-06-2014 09:30
Hola Rubén,

no se cual ha sido exactamente tu problema, pero mi experiencia es poca. Yo hice alguna prueba con Shiny (http://shiny.rstudio.com/), que se integra muy bien en Rstudio y sirve para mostrar resultados de R en páginas web. Me pareció que iba bastante bien. No se si lo conoces. En cuanto a Rserve y JRI, no los conozco mucho, por lo que no sabría qué decirte.

Un saludo,

Franz
#1 Rubén 23-06-2014 17:49
Hola Franz,
Muy interesante tu página. Veo que tienes experiencia en Java, R y en tema web. Estoy teniendo problemas con un proyecto personal que está relacionado con estos temas. Estoy con Java, de momento en Swing. Hice una app de escritorio y a partir de cálculos quiero sacar un gráfico Heatmap. R y ggplot2 parecía una solución fácil por lo que conecto por rJava/JRI y solo se crean los gráficos en blanco aunque el código R está perfecto y en Rstudio funciona perfectamente. He leído en algunas páginas que no es posible a través de JRI. Estoy dudando de pasarlo a aplicación web y usar Rserve pero tengo miedo de hacer todo el trabajo para al final tener el mismo problema con Rserve. ¿Tienes experiencia en este tema?¿Conoces alguna solución posible? Cualquier sugerencia se agradecerá enormemente.

No tiene permiso suficiente para añadir comentarios