你如何在R中制作50状态地图?
似乎人们创建的所有示例地图都只是较低的48
答案 0 :(得分:15)
有很多方法可以做到这一点。就个人而言,我发现Google拥有最具吸引力的地图。我建议ggmap
,googleVis
和/或RgoogleMaps
。
例如:
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)
产生这个:
另一种比maps
更具吸引力的方法是遵循this tutorial的方法,该方法显示如何将自定义地图从Inkscape(或等效地,Adobe Illustrator)导入到R中绘图。
你最终会得到这样的东西:
以下是使用choroplethr
和ggplot2
的方法:
library(choroplethr)
library(ggplot2)
library(devtools)
install_github('arilamstein/choroplethrZip@v1.3.0')
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
给你:
答案 1 :(得分:6)
This R-bloggers link可能对您有用。
为了让您了解一下,您可以使用
开始使用50状态地图library(maps)
map("world", c("USA", "hawaii"), xlim = c(-180, -65), ylim = c(19, 72))
信不信由你,夏威夷就在那里。由于利润空间的缘故,它真的很小。
答案 2 :(得分:5)
恢复旧线程,因为它仍然没有接受的答案。
查看@ hrbrmstr的albersusa
包:
cmd.Parameters.Add("?apellido", MySqlDbType.VarChar).Value = usuario.apellido;
产生
并且可以做更多的事情
devtools::install_github("hrbrmstr/albersusa")
library(albersusa)
plot(usa_composite(proj="laea"))
答案 3 :(得分:2)
您可能需要考虑在maptools包中使用state.vbm
地图,这包括所有50个状态,并使较小的状态更加可见(适用于着色,或向每个州添加绘图,但网站之间的距离)不会是准确的。)
另一个选择是绘制连续的48个州,然后在开放区域自己添加阿拉斯加和夏威夷。这样做的一个选择是使用TeachingDemos包中的subplot
函数。
以下是一些使用maptools包提供的几个shapefile的示例代码:
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) )
您只需要为状态找到合适的形状文件。
答案 4 :(得分:2)
使用choroplethr
,您可以通过执行以下操作来创建简单快速的状态地图:
#install.packages("choroplethr")
#install.packages("choroplethrMaps")
library(choroplethr)
library(choroplethrMaps)
data(df_pop_state)
StateChoropleth$new(df_pop_state)$render()
我喜欢这种方法,因为它快速而简单。如果您不想要州标签,删除它们需要更多一点:
c = StateChoropleth$new(df_pop_state)
c$title = "2012 State Population Estimates"
c$legend = "Population"
c$set_num_colors(7)
c$set_zoom(NULL)
c$show_labels = FALSE
without_abbr = c$render()
without_abbr