tutorial ggplot geom_text espaƱol change r ggplot2 geospatial

geom_text - ggplot title center



ggplot mapa con l (2)

Una opción es mapear el crecimiento al tamaño de algunos puntos trazados en el centroide de los polígonos.

centroids <- as.data.frame(coordinates(world.map)) df <- data.frame(df,centroids) choropleth <-ggplot() + geom_map(aes(fill = category, map_id = id),data = df, map =world.ggmap) + expand_limits(x = world.ggmap$long, y = world.ggmap$lat) + scale_fill_hue(na.value=NA) choropleth choropleth + geom_point(aes(x=V1,y=V2,size=growth),data=df) + scale_area(range=c(0,3))

O si realmente desea duplicar el código de color, podría colorear los puntos en su lugar. Tenga en cuenta que también puede agregar un mapa de trama de imágenes satelitales con el nuevo paquete OpenStreetMap (plug sin vergüenza).

library(OpenStreetMap) library(raster) rastermap <- openmap(c(70,-179), c(-70,179),zoom=2,type=''bing'') rastermap <- openproj(rastermap) autoplot(rastermap,expand=FALSE) + geom_map(aes(x=70,y=70,fill = category, map_id = id),data = df, map =world.ggmap) + expand_limits(x = world.ggmap$long, y = world.ggmap$lat) + scale_fill_hue(na.value=NA) + geom_point(aes(x=V1,y=V2,colour=growth),data=df) + scale_colour_gradient(low = "red", high = "blue", guide = "colorbar",na.value=NA)

Quiero trazar un mapa mundial usando ggplot2 (v.9), que combina dos piezas si la información. El siguiente ejemplo ilustra:

library(rgdal) library(ggplot2) library(maptools) # Data from http://thematicmapping.org/downloads/world_borders.php. # Direct link: http://thematicmapping.org/downloads/TM_WORLD_BORDERS_SIMPL-0.3.zip # Unpack and put the files in a dir ''data'' gpclibPermit() world.map <- readOGR(dsn="data", layer="TM_WORLD_BORDERS_SIMPL-0.3") world.ggmap <- fortify(world.map, region = "NAME") n <- length(unique(world.ggmap$id)) df <- data.frame(id = unique(world.ggmap$id), growth = 4*runif(n), category = factor(sample(1:5, n, replace=T))) ## noise df[c(sample(1:100,40)),c("growth", "category")] <- NA ggplot(df, aes(map_id = id)) + geom_map(aes(fill = growth, color = category), map =world.ggmap) + expand_limits(x = world.ggmap$long, y = world.ggmap$lat) + scale_fill_gradient(low = "red", high = "blue", guide = "colorbar")

Sin embargo, esta solución no es una buena manera de mostrar tanto el growth como la category . Growth es muy visible, pero la category es casi imposible de ver porque es solo un borde.

He tratado de aumentar el tamaño de las fronteras, pero sin suerte (es difícil trabajar con el nuevo geom_map). ¿Alguien sabe cómo aumentar el tamaño del borde en el ejemplo anterior, o incluso mejor, un mecanismo para mostrar dos factores?

Una pregunta adicional: nombres de países, como los utilizados por el paquete de mapas (¡que presenta la URSS!) Son los datos utilizados en el ejemplo es frágil. Prefiero usar ISO 3166-1 alpha-3 ( 1 ). ¿Alguien sabe datos fácilmente utilizables con ggplot2 que cuenta con nombres de países ISO -... (incluidos en los datos vinculados)?

Resultado:

resultado http://ompldr.org/vY3hsYQ


Yo usaría diferentes rangos de tono para el color de relleno y línea:

ggplot(df, aes(map_id = id)) + geom_map(aes(fill = growth, color = category), map =world.ggmap) + expand_limits(x = world.ggmap$long, y = world.ggmap$lat) + scale_fill_gradient(high = "red", low = "white", guide = "colorbar") + scale_colour_hue(h = c(120, 240))

O bien, use el relleno para la categoría y la transparencia para el nivel de crecimiento.

ggplot(df, aes(map_id = id)) + geom_map(aes(alpha = growth, fill = category), map =world.ggmap) + expand_limits(x = world.ggmap$long, y = world.ggmap$lat) + scale_alpha(range = c(0.2, 1), na.value = 1)

Depende de lo que quieras mostrar.

Por las dudas, esta es la forma de cambiar el tamaño lineal:

ggplot(df, aes(map_id = id)) + geom_map(aes(fill = growth, color = category, size = factor(1)), map =world.ggmap) + expand_limits(x = world.ggmap$long, y = world.ggmap$lat) + scale_fill_gradient(high = "red", low = "white", guide = "colorbar") + scale_colour_hue(h = c(120, 240)) + scale_size_manual(values = 2, guide = FALSE)

Aquí está la versión HSV:

df$hue <- ifelse(is.na(df$category), 0, as.numeric(df$category)/max(as.numeric(df$category), na.rm=T)) df$sat <- ifelse(is.na(df$growth), 0, df$growth/max(df$growth, na.rm=T)) df$fill <- ifelse(is.na(df$category), "grey50", hsv(df$hue, df$sat)) ggplot(df, aes(map_id = id)) + geom_map(aes(fill = fill), map =world.ggmap) + expand_limits(x = world.ggmap$long, y = world.ggmap$lat) + scale_fill_identity(guide = "none")