我有一个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包含所有相关信息。
答案 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