r - 密度热图 - 我认为奇怪的比例和显示问题?
问题描述
我正在尝试对洛杉矶的逮捕相关数据进行一些映射(使用此数据集:https ://data.lacity.org/A-Safe-City/Arrest-Data-from-2010-to-Present/yru6- 6re4 )。
当我运行如下所示的代码时,我收到以下错误:
Warning message: Removed 11,578 rows containing non-finite values (stat_density2d).
因此,这意味着在 11,808 个数据点中,只有 230 个显示在地图上。考虑到我只放大了洛杉矶体育馆周围的两个或三个街区半径,这似乎是合理的。这意味着,2017 年,该地区有 230 人被捕。好的。
但是,当我绘制它时,我得到的密度范围从 500 一直到 2,500(如下所示)。
这是 location2017.df 的小标题:
> as_tibble(location2017.df)
# A tibble: 11,808 x 3
lon lat Frequency
<dbl> <dbl> <int>
1 -118. 33.7 5
2 -118. 33.7 2
3 -118. 33.7 1
4 -118. 33.7 1
5 -118. 33.7 4
6 -118. 33.7 2
7 -118. 33.7 2
8 -118. 33.7 1
9 -118. 33.7 1
10 -118. 33.7 4
# … with 11,798 more rows
这是我用来设置所有内容的代码。
这是绘图输出:
正如你所看到的,它已经完全“被淘汰”了……我觉得奇怪的是,根据假设的 238 人总逮捕,整个地图上有紫色色调。同样,密度图也很奇怪……为什么在逮捕人数有限的情况下会从 500 人增加到 2,500 人?
所以,最后,有两个问题:
1. 整个地图呈现紫色色调是否正确?
2. 为什么地图一侧的密度比例与仅绘制 238 次逮捕的情况相同?
非常感谢任何关于如何使这个情节看起来/阅读更好的想法/建议/更正。
编辑
决定快速输出一个与上面相同信息的geom_point。这是情节:
如您所见,第一张图片中的“紫色色调”是有道理的。整个区域的逮捕数量有限,热图的黄色部分所在的区域很大。
那么,有没有办法在更少的逮捕和更多的逮捕之间形成更强的对比,以限制当前覆盖地图的色调?
解决方案
您的第二个问题可以帮助回答您的第一个问题:
ggplot2 在从数据集中选择它应该绘制的元素之前计算比例范围,所以它看到你有一个从 500 到 2500 的值范围 - 为什么会这样?因为你的数据。请注意,当您放大非常特定的区域时,您的long
lat
坐标值非常宽(即)。33.7
坐标可以具有不同程度的准确度,例如,如果您在 时逮捕了一些人,在 时逮捕了33.72515
更多人33.71235
,那么您的数字会更准确地描述变焦范围内的实际犯罪数量。
这也解释了为什么您在整个地块上都有紫色色调 - 您的数据表明在这些区域发生了超过 500 起犯罪,即使它实际上可能是更具体的街道/小巷。
你能做什么?
- 如果您预处理坐标以减少小数点后的一些数字 - 您应该尝试使用原始坐标数据。
查看您的数据集并查找是否有犯罪地点的描述(通常在 gov 数据库中,每个条目都有大量输入数据),然后您可以尝试找到为每个条目指示的街道的确切坐标犯罪,并以这种方式获得更准确的坐标 - 这将需要一些工作,并且取决于您是否拥有数据集中每一行的街道名称。
绘制更缩小的地图视图。
这是我过去参与的一个项目的示例,我在华盛顿特区创建了一个停车引用图。如您所见,与您的设置相比,我从数据集中获得的准确度非常高(小数点后 4),您可以看到这在密度图中是如何反映的:
推荐阅读
- r - 将批量 .newick 文件合并到一个 newick 文件中
- flutter - Flutter:无法在 dart Isolate 中执行数据库 CRUD
- mysql - 三个表MYSQL的JOIN结果错误
- opengl - 如何控制 OpenGL 驱动程序每秒渲染的帧数?
- flutter - Flutter 通知计数,然后在读取时隐藏徽章并在推送新通知时显示
- javascript - 如何使用 ajax asp.net 正确更新我的表
- python - 如何在 Python 列表中找到元素 [-1] 的正索引
- sql-server - SQL Server 2019 开发者版是否支持 SSISDB 和 SQL Job 代理?
- c# - 无法设置 Blazor 组件的样式
- swift - 如何从 Swift 中的文档文件夹中检索保存的 UIImageViews?