Estoy tratando de usar ggplot2 y mapas para trazar los nombres de los condados en el estado de Nueva York. Mi enfoque fue encontrar los medios de latitud y longitud por condado (supongo que este es el centro del condado, pero esto puede ser una idea errónea) y luego usar geom_text para trazar los nombres en el mapa. No se está comportando como esperaba, ya que está trazando múltiples nombres por condado.ggplot nombres centrados en un mapa
El resultado que estoy buscando es que el centro de cada texto (condado) esté en el centro de su condado respectivo.
Además de resolver el problema, agradecería que me ayudes a entender qué pasa con mis pensamientos con ggplot.
Gracias de antemano.
library(ggplot2); library(maps)
county_df <- map_data('county') #mappings of counties by state
ny <- subset(county_df, region=="new york") #subset just for NYS
ny$county <- ny$subregion
cnames <- aggregate(cbind(long, lat) ~ subregion, data=ny, FUN=mean)
p <- ggplot(ny, aes(long, lat, group=group)) + geom_polygon(colour='black', fill=NA)
p #p of course plots as expected
#now add some county names (3 wrong attempts)
p + geom_text(aes(long, lat, data = cnames, label = subregion, size=.5)) #not correct
#I said maybe I'm confusing it with the same names for different data sets
names(cnames) <-c('sr', 'Lo', 'La')
p + geom_text(Lo, La, data = cnames, label = sr, aes(size=.5)) #attempt 2
p + geom_text(aes(Lo, La, data = cnames, label = sr, size=.5)) #attempt 3
Creo que has hecho lo que pedí y más. Así que estoy marcando este hilo como resuelto. Gracias. Todavía no estoy satisfecho con la ubicación de los nombres y ahora me doy cuenta de que necesito un mejor enfoque para centrarme. El enfoque de Justin se ve interesante. Voy a publicar otra pregunta sobre algunas técnicas de centrado mejoradas. –
Aún mejor para el punto medio es la función centroide en el paquete de geosfera. Esto es lo que hice en lugar de la función de agregado en esta respuesta: 'cnames <- ddply (ia_pop,.(Condado, grupo), resuma, Centroide = centroide (cbind (long, lat))) ' y luego divida la columna Centroide de esta manera: ' cnames $ long <- cnames $ Centroid [, 1] ' y 'cnames $ lat <- cnames $ Centroid [, 2]' – Danny