r - 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')
有些问题很清楚,例如热图的绘图窗口与底图的尺寸不同。但是,我的主要问题是我无法覆盖这两个图,我不知道为什么。
解决方案
推荐阅读
- r - R. 多元线性回归在变量对上逐列迭代
- php - 如何从自定义表单编辑 cutsom Wordpress 数据库
- android - android UI在读取数据时被冻结和线程阻塞
- sql - 按滑动时间段聚合数据
- ruby - 如何在 squib 中生成一张 A4 大小的单卡?
- flutter - 如何在颤动中将图像文件转换为资产图像?
- linux - 编写一个命令在 linux 的不同行中显示文本文件名及其大小
- terraform - 使用 Terraform 将 NIC 附加到 Azure 中正在运行的 VM
- java - Opentememetry Zuul 集成
- python - 对源自循环的多个线程进行排队的最安全方法是什么?