Sto tentando di utilizzare ggplot2 e mappe per tracciare i nomi delle contee nello stato di New York. Il mio approccio era quello di trovare i mezzi di latitudine e longitudine per contea (presumo che questo sia il centro della contea, ma questo potrebbe essere un pensiero errato) e quindi usare geom_text per tracciare i nomi sulla mappa. Non si sta comportando come previsto, poiché sta tracciando più nomi per contea.ggplot Nomi centrati su una mappa
Il risultato che sto cercando è che il centro di ogni testo (contea) sia al centro della rispettiva contea.
Oltre a risolvere il problema, mi piacerebbe molto aiutare a capire cosa c'è di sbagliato nel mio modo di pensare con ggplot.
Grazie in anticipo.
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
Penso che tu abbia fatto quello che ho chiesto e altro ancora. Quindi sto marcando questo thread come risolto. Grazie. Non sono ancora soddisfatto del posizionamento dei nomi e ora mi rendo conto che ho bisogno di un approccio migliore al centraggio. L'approccio di Justin sembra interessante. Inserirò un'altra domanda su alcune tecniche di centraggio migliorate. –
Ancora meglio per il punto medio è la funzione centroide nel pacchetto geosfera. Ecco cosa ho fatto invece della funzione di aggregazione in questa risposta: 'cnames <- ddply (ia_pop,.(County, group), riepilogare, Centroid = centroid (cbind (long, lat))) e quindi suddividere la colonna Centroid in questo modo: 'cnames $ long <- cnames $ Centroid [, 1]' e 'cnames $ lat <- cnames $ Centroid [, 2]' – Danny