从shapefile及其数据生成choropleth类型打印

从shapefile及其数据生成choropleth类型打印,r,plot,shapefile,R,Plot,Shapefile,我有一个显示巴尔的摩内社区的形状文件,该形状文件包含每个“胡德”的社区名称和死亡率值。数据已经存在了!我只想把它画出来,这样我就得到了一个由10个(或任意数量的)死亡率分位数组成的彩色编码图 我在choropleths上做了很多搜索,但没有找到任何有用的东西 我希望我能提供足够的信息,以便人们能够提供帮助: # load a bunch of packages just to be safe library(sp) library(rgdal) library(maptools) library

我有一个显示巴尔的摩内社区的形状文件,该形状文件包含每个“胡德”的社区名称和死亡率值。数据已经存在了!我只想把它画出来,这样我就得到了一个由10个(或任意数量的)死亡率分位数组成的彩色编码图

我在choropleths上做了很多搜索,但没有找到任何有用的东西

我希望我能提供足够的信息,以便人们能够提供帮助:

# load a bunch of packages just to be safe
library(sp)
library(rgdal)
library(maptools)
library(lattice)

# I start using OGR tool
ogrListLayers("mortality.shp")
[1] "mortality"
mort <- readOGR("mortality.shp", "mortality")
summary(mort)
> summary(mort)
Object of class SpatialPolygonsDataFrame
Coordinates:
             min            max
x 1393926.784012 1445503.226141
y  557733.624942  621406.812556
Is projected: TRUE 
proj4string :
[+proj=lcc +lat_1=38.3 +lat_2=39.45 +lat_0=37.66666666666666 +lon_0=-77
+x_0=399999.9999999999 +y_0=0 +datum=NAD83 +units=us-ft +no_defs
+ellps=GRS80 +towgs84=0,0,0]
Data attributes:
                                CSA        Mort_11            
 Allendale/Irvington/S. Hilton    : 1   Min.   :0.0083400000  
 Beechfield/Ten Hills/West Hills  : 1   1st Qu.:0.0346990000  
 Belair-Edison                    : 1   Median :0.0398540000  
 Brooklyn/Curtis Bay/Hawkins Point: 1   Mean   :0.0390734909  
 Canton                           : 1   3rd Qu.:0.0433880000  
 Cedonia/Frankford                : 1   Max.   :0.0696700000  
 (Other)                          :49                         

# I can easily get at the values I want to plot...but how to plot?
mort$Mort_11     # shows the mortality values

attributes(mort)   #produces a ton of output.  Here's a little:
$data
                                     CSA  Mort_11
0          Allendale/Irvington/S. Hilton 0.039854
1        Beechfield/Ten Hills/West Hills 0.040512
2                          Belair-Edison 0.050204
3      Brooklyn/Curtis Bay/Hawkins Point 0.049058
...
27             Inner Harbor/Federal Hill 0.034886
...
#为了安全起见,加载一堆软件包
图书馆(sp)
图书馆(rgdal)
图书馆(地图工具)
图书馆(格子)
#我开始使用OGR工具
ogrListLayers(“死亡指数”)
[1] “死亡率”
mort摘要(mort)
类的对象空间多边形框架
协调:
最小最大值
x 1393926.784012 1445503.226141
y 557733.624942 621406.812556
这是真的吗
proj4string:
[+proj=lcc+lat_1=38.3+lat_2=39.45+lat_0=37.6666+lon_0=-77
+x_0=399999.99999999+y_0=0+基准面=NAD83+单位=us英尺+无刻度
+ellps=GRS80+towgs84=0,0,0]
数据属性:
CSA莫图11
阿伦代尔/欧文顿/希尔顿南部:1分钟:0.0083400000
比奇菲尔德/十山/西山:1区:0.0346990000
贝莱尔·爱迪生:1中位数:0.0398540000
布鲁克林/柯蒂斯湾/霍金斯点:1平均值:0.0390734909
州:1第三区:0.0433880000
塞多尼亚/弗兰克福德:1最大值:0.0696700000
(其他):49
#我可以很容易地得到我想要绘制的值…但是如何绘制呢?
mort$mort#U 11#显示死亡率值
属性(mort)#产生大量输出。这里有一点:
$data
CSA莫图11
0阿伦代尔/欧文顿/希尔顿南部0.039854
1比奇菲尔德/十山/西山0.040512
2贝莱尔爱迪生0.050204
3布鲁克林/柯蒂斯湾/霍金斯角0.049058
...
27内港/联邦山0.034886
...

我认为告诉R使用形状文件和已经在其中的数据是很容易的。有没有一个简单的方法可以做到这一点?我想应该只有几行,因为shapefile包含了所有相关信息。

网上有很多很好的教程,介绍了ggplot2中的choropleth地图。 首先是哈德利·威克姆自己的:
第二,空间方面:

基本上,对于ggplot2,需要使用fortify函数将空间数据转换为标准数据帧,然后可以将其打印为多边形,并将fill设置为您选择的变量

差不多

p <- ggplot(data = mort, aes(long, lat, group = group, fill = Mort_11)) + 
  geom_poly() + # plot the filled polygons
  geom_path(colour = "white") # add nice white borders to the polygons
p # render the plot

p链接到shapefile?