如何在类似热图的样式中在ggplot2中的地图上绘制样方数

时间:2012-04-24 00:26:49

标签: r ggplot2

我正在尝试使用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和数据大致如下: enter image description here

接下来我要采取的步骤是对各种细胞大小进行样方分析,并在点上绘制结果。假设我成功获得了一个quadratcount对象(现在将数据纠缠成正确的格式),我将如何将其绘制为类似热图的叠加层?

1 个答案:

答案 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来启用不同的地图投影。

enter image description here