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