the plots library fancy examples best r ggplot2 cartogram

plots - Mapa de Cartogram+coropleta en R



plots in r (2)

El package cartogram , disponible en CRAN, tiene el cartograma de estilo de distorsión de goma que desea.

He estado usando ggplot2 últimamente para crear un grupo de coropletas. Me preguntaba si era posible usar ggplot2 para crear un mapa similar a este (de WorldMapper ):

Es un coroplete donde los polígonos de shapefile se distorsionan para representar recuentos de población relativos. Creo que esto se llama un cartograma. Lo hacen con un montón de otras variables. En el espíritu del Choropleth R Challenge , ¿alguien sabe cómo hacer esto con R?


Esto podría funcionar:

Necesitará preinstalar FFTW. Rcartogram y getcartr necesitarás devtools .

No estoy seguro de cómo hacerlo en ggplot2 , pero aquí hay otra opción.

Aquí estoy usando un shapefile de Thematic World Map , después de descargar y descomprimir, obtendrá una carpeta llamada TM_WORLD_BORDERS-0.3 .

Para el coroplete / cartograma, debería cambiar la forma primero con el tamaño y sombrear con una función:

library(rgdal)#needed for readOGR library(sp) #needed for spplot library(Rcartogram) library(getcartr) setwd("<your_directory_with_shapefile>") #to the file that has your shapefile and your information file (in this case, a csv named datR) #read shapefile #here i have a folder with a shapefile and a csv with columns as ISO (IS02 for convenience) country and value worldR <- readOGR(dsn = getwd(), layer= "TM_WORLD_BORDERS-0.3") # If reading a shapefile, the data source name (dsn= argument) is the folder (directory) where the shapefile is, and the layer is the name of the shapefile (without the .shp extension) #names(worldR) #note how here there are columns for ISO2 (which matches a column named ''iso'' in datR and LAT/LON #[1] "FIPS" "ISO2" "ISO3" "UN" "NAME" "AREA" "POP2005" "REGION" "SUBREGION" "LON" "LAT" proj4string(worldR) datR <- read.csv("datR.csv") #this is a file that has one column called ''score'' and one column called size'': head(datR) # iso size score #1 AE 323 0.9819077 #2 AR 262 0.9591067 #3 AT 7481 0.9987313 #4 AU 5425 0.9837414 #5 BA 31 0.9871938 #6 BB 99 0.9715991 ##Merge SpatialPolygonsDataFrame with other info map_dat <- merge(worldR, datR, by.x="ISO2",by.y="iso") #remove coordinate reference system arguments proj4string(map_dat) <- CRS(as.character(NA)) # from here https://github.com/chrisbrunsdon/getcartr/issues/1 world.carto <- quick.carto(map_dat, map_dat$size, blur = 0) #plot(world.carto) #cartogram without anything #spplot size, color my.palette = c("#ff0000", "#ff8000", "#ffff00", "#bfff00","#00ff00") #red, orange, yellow, light green, dark green spplot(world.carto, ''score'', col.regions = my.palette, cuts = length(my.palette)-1,main="Choropleth of score and cartogram of size")

Esto debería darte una trama similar a esta:

Hice esto de forma apresurada, avíseme si funciona