我正在尝试使用shapefile和包含在其中的点,最后得到shapefile,点的图,然后最终将quadrat分析叠加在顶部,并具有一定量的alpha透明度。
我试过并想出了应该服务的这个例子:
library(ggplot2)
library(maps)
library(maptools)
library(spatstat)
library(plyr)
# generate polygons
usa <- map('usa', plot=F)
IDs <- sapply(strsplit(usa$names, ':'), function(x) x[1])
crs <- CRS('+proj=longlat +ellps=WGS84')
usa.sp <-map2SpatialPolygons(usa, IDs=usa$names, proj4string=crs)
usa.pts <- fortify(usa.sp, region="id")
base.plot <- ggplot(usa.pts, aes(x=long, y=lat)) +
geom_path(aes(group=id)) +
coord_equal()
# generate point process
lon <- runif(5000, min(usa.pts$long, na.rm=TRUE), max(usa.pts$long, na.rm=TRUE))
lat <- rnorm(5000, mean(usa.pts$lat, na.rm=TRUE), sd=sd(usa.pts$lat, na.rm=TRUE)/2)
points <- data.frame(lon, lat)
points.sp <- SpatialPoints(points, proj4string=crs)
points <- points[which(!is.na(over(points.sp, usa.sp))),]
# the first plot
base.plot +
geom_point(data=points, aes(x=lon, y=lat), color="red", alpha=I(0.5))
那么我的shapefile和数据大致如下:
接下来我要采取的步骤是对各种细胞大小进行样方分析,并在点上绘制结果。假设我成功获得了一个quadratcount对象(现在将数据纠缠成正确的格式),我将如何将其绘制为类似热图的叠加层?
答案 0 :(得分:4)
要在ggplot中添加热图,您可以使用geom_tile
或其默认统计信息stat_bin2d
:
library(mapproj)
base.plot +
stat_bin2d(data=points, aes(x=lon, y=lat), bins=100) +
coord_map()
我还建议您在安装coord_map
包之后使用coord_equal
而不是mapproj
来启用不同的地图投影。