从shapefile及其数据制作等值线型图

时间:2014-10-15 21:34:06

标签: r plot shapefile

我有一个shapefile显示巴尔的摩内的社区,shapefile包含每个&#;引擎盖的邻域名称和死亡率值。数据已经存在!我只想绘制它,以便得到死亡率值的10(或任意数量)分位数的颜色编码图。

我已经做了很多关于等值的搜索但是没有找到任何有用的东西。

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

# 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
...

我认为很容易告诉 R 使用形状文件并使用其中已有的数据。是否有捷径可寻?我认为它应该只是几行,因为shapefile包含所有相关信息。

1 个答案:

答案 0 :(得分:1)

网上有很多很好的教程,描述了ggplot2中的等值区域地图。 首先,哈德利威克姆自己:https://github.com/hadley/ggplot2/wiki/plotting-polygon-shapefiles
第二,Spatial.ly:http://spatial.ly/2013/12/introduction-spatial-data-ggplot2/

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

这样的东西
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