Come si crea una mappa a 50 stati in R?Come si crea una mappa a 50 stati (anziché solo 48 in basso)
sembra che tutti l'esempio mappe persone hanno creato sono solo della parte bassa della 48
Come si crea una mappa a 50 stati in R?Come si crea una mappa a 50 stati (anziché solo 48 in basso)
sembra che tutti l'esempio mappe persone hanno creato sono solo della parte bassa della 48
This R-bloggers link potrebbe essere utile per voi.
Per dare uno sguardo, si può iniziare su una mappa 50-stato con
library(maps)
map("world", c("USA", "hawaii"), xlim = c(-180, -65), ylim = c(19, 72))
Che ci crediate o no, Hawaii è lì. È davvero molto piccolo a causa dei margini.
Ci sono molti modi per farlo. Personalmente, trovo che Google abbia le mappe più attraenti. Raccomando ggmap
, googleVis
e/o RgoogleMaps
.
Ad esempio:
require(googleVis)
G4 <- gvisGeoChart(CityPopularity, locationvar='City', colorvar='Popularity',
options=list(region='US', height=350,
displayMode='markers',
colorAxis="{values:[200,400,600,800],
colors:[\'red', \'pink\', \'orange',\'green']}")
)
plot(G4)
Produce questo:
Un altro approccio che vi darà un risultato più attraente rispetto maps
è quello di seguire l'approccio di this tutorial che mostra come importare mappe personalizzate da Inkscape (o, equivalentemente, Adobe Illustrator) in R per la stampa.
Vi ritroverete con qualcosa di simile:
Ecco un modo ad essa con choroplethr
e ggplot2
:
library(choroplethr)
library(ggplot2)
library(devtools)
install_github('arilamstein/[email protected]')
library(choroplethrZip)
data(df_zip_demographics)
df_zip_demographics$value = df_zip_demographics$percent_asian
zip_map = ZipChoropleth$new(df_zip_demographics)
zip_map$ggplot_polygon = geom_polygon(aes(fill = value),
color = NA)
zip_map$set_zoom_zip(state_zoom = NULL,
county_zoom = NULL,
msa_zoom = NULL,
zip_zoom = NULL)
zip_map$title = "50 State Map for StackOverflow"
zip_map$legend = "Asians"
zip_map$set_num_colors(4)
choro = zip_map$render()
choro
data(df_pop_state)
outline = StateChoropleth$new(df_pop_state)
outline = outline$render_state_outline(tolower(state.name))
choro_with_outline = choro + outline
choro_with_outline
che ti dà
: ho scritto un post sul blog per accompagnare questa soluzione http://hack-r.com/?p=507 –
Si potrebbe prendere in considerazione l'utilizzo della mappa state.vbm
nel pacchetto maptools, che include tutti i 50 stati e rende più visibili gli stati più piccoli (funziona bene per colorare o aggiungere trame a ciascuno stato, ma le distanze tra i siti non saranno esatte) .
Un'altra opzione è disegnare i 48 stati contigui, quindi nelle aree aperte aggiungere Alaska e Hawaii. Un'opzione per fare ciò è usare la funzione subplot
dal pacchetto TeachingDemos.
Ecco qualche esempio di codice utilizzando un paio di shapefile fornite dal pacchetto MapTools:
library(maptools)
library(TeachingDemos)
data(state.vbm)
plot(state.vbm)
yy <- readShapePoly(system.file("shapes/co37_d90.shp", package="maptools")[1])
zz <- readShapePoly(system.file("shapes/co51_d90.shp", package="maptools")[1])
xx <- readShapePoly(system.file("shapes/co45_d90.shp", package="maptools")[1])
plot(yy)
par('usr')
subplot(plot(zz), c(-84,-81), c(31,33))
subplot(plot(xx), c(-81, -78), c(31,33))
Si sarebbe solo bisogno di trovare i file di forma appropriati per gli stati.
Resurrezione di un thread precedente perché non ha ancora una risposta accettata.
albersusa
pacchetto Partenza @ di hrbrmstr:
devtools::install_github("hrbrmstr/albersusa")
library(albersusa)
plot(usa_composite(proj="laea"))
che produce
e può fare molto di più
us <- usa_composite()
us_map <- fortify(us, region="name")
gg <- ggplot()
gg <- gg + geom_map(data=us_map, map=us_map,
aes(x=long, y=lat, map_id=id),
color="#2b2b2b", size=0.1, fill=NA)
gg <- gg + theme_map()
gg +
geom_map([email protected], map=us_map,
aes(fill=pop_2014, map_id=name),
color="white", size=0.1) +
coord_proj(us_laea_proj) +
scale_fill_viridis(name="2014 Populaton Estimates", labels=comma) +
theme(legend.position="right")
Queste mappe sono chiamate "coroplethi". Una ricerca di Google per "stato di choropleth 50" mi ha trovato il pacchetto 'choroplethr' che può generare mappe con tutti i 50 stati. Aggiornamento – shadowtalker