首页 > 解决方案 > ggplot() 中的热图,绘制所有图层

问题描述

我正在制作英国洪水事件的热图。我正在按照此处列出的示例进行操作。但是,我使用的是与示例不同的基本地图,它不会显示在地图上。对于我的底图,我使用英国政府提供的 shapefile,在此处找到,并将其命名为uk.shp一个sf对象。洪水数据是专有的,我不能分享,但原始格式是多边形 shapefile。然后我将这些 shapefile 转换为网格点,这样我就可以绘制一个连续的热图,这个sf对象被命名为pt.shp.

这是基础地图、原始 shapefile 和为上下文而叠加的网格点。你可以看到这里有很多洪水,经常在同一个点下。我构建了一个网格 sf 对象,它重复给定点并使用洪水 ID 作为唯一标识符。以下是删除了专有信息的数据示例。我能想到的一个可能的问题是st_intersection返回泛洪 shapefile 的纬度和经度(我将其设置为映射aes()),但点的映射坐标列在数据的几何列中。 在此处输入图像描述

在此处输入图像描述

但是,当我使用stat_density2d()我的底图时,连续图消失了。下面是我每次映射迭代的绘图代码。

# base map plots
base <- ggplot()+
  geom_sf(data=uk.shp)

在此处输入图像描述

# Plot density of the points
ggplot()+
  stat_density2d(data=pt.shp, aes(x=long, y=lat, fill = ..density..), geom='tile', contour = F)

在此处输入图像描述

# base map shows up w/o density map? But legend exists so it is being mapped... 
base +
    stat_density2d(data=pt.shp, aes(x=long, y=lat, fill = ..density..), geom='tile', contour = F, alpha = .5) +
    viridis::scale_fill_viridis(option='inferno')

在此处输入图像描述

有些问题很清楚,例如热图的绘图窗口与底图的尺寸不同。但是,我的主要问题是我无法覆盖这两个图,我不知道为什么。

标签: rggplot2gisheatmapsf

解决方案


推荐阅读