【发布时间】:2019-03-15 22:12:30
【问题描述】:
我在 Excel 上收集了一些数据(纽约地铁站的每日负载)。第一列有车站名称,第二列有占用,第三和第四列有经度和纬度,如下表所示。
如何将其转换为纽约市的热图?我知道用 R 或 Matlab 编码,但我愿意接受任何其他方便的方法。
【问题讨论】:
我在 Excel 上收集了一些数据(纽约地铁站的每日负载)。第一列有车站名称,第二列有占用,第三和第四列有经度和纬度,如下表所示。
如何将其转换为纽约市的热图?我知道用 R 或 Matlab 编码,但我愿意接受任何其他方便的方法。
【问题讨论】:
首先,只有五次观察,热图可能不是可视化给定数据的最佳方式。将每个观察点作为一个点,然后按占用进行颜色编码可能是解决给定问题的更好方法。一般来说,每当我有经度和纬度数据时,我都会使用 R 中的 GGMap 库和 Google Maps API 来绘制数据。可以在下面找到在 R 中制作热图(如果这是您真正想要的)的代码,但请注意您必须拥有 Google Maps API 密钥(学生免费!!)。
library(tidyverse)
library(ggmap)
library(devtools)
register_google("YOUR_API_KEY")
nyc_map <- get_map(location = c(lon = -74.00, lat = 40.71), maptype = "terrain", zoom = 13)
ggmap(nyc_map) +
geom_density2d(data = data, aes(x = Longitude, y = Latitude, fill = Occupancy), size = 0.3) +
stat_density2d(data = data, aes(x = Longitude, y = Latitude, fill = ..level.., alpha = ..level..), size = 0.01, bins = 16, geom = "polygon") +
scale_fill_gradient(low = "green", high = "red") +
scale_alpha(range = c(0, 0.3), guide = FALSE)
这并不完美,但这是制作热图的快速方法,也是一个很好的起点。请注意,这些站点相距甚远,因此添加更多观测值可能会使绘图更好。
我使用ggmap-demo-heat 来获取制作热图的代码。我再次建议对每个站点使用单点 (geom_point),然后按占用率对每个站点进行着色。 geom_point(data = data, aes(x = Longitude, y = Latitude, col = occupany)) 可能是一个不错的起点。
【讨论】:
Qgis 是一个开源工具。在其中,您可以从 .csv 文件创建一个图层,然后在图层属性 ==> 样式中选择热图并修改其他变量。完成此步骤后,在 raster==> heatmap 下,修改其他参数即可。
【讨论】: