如何在没有坐标的地图上绘制数据?

Posted

技术标签:

【中文标题】如何在没有坐标的地图上绘制数据?【英文标题】:How to plot data on map without coordinates? 【发布时间】:2021-08-19 10:12:59 【问题描述】:

我正在尝试绘制如下数据框:

code    name             description    estimate
0       Australia         Vegetables     854658
0       Australia         Fruit          667541
1       New South Wales   Vegetables     45751
1       New South Wakes   Fruit          77852
2       Victoria          Vegetables     66211
2       Victoria          Fruit          66211
. 
.
.

对于澳大利亚的每个地区,都有多行具有不同的描述。我可以使用哪些包来绘制没有坐标的估计地图? 我尝试 ggplotozmaps 与 ggplot2 教程中提到的 sf,我只过滤了水果的数据框,但有错误消息: stat_sf requires the following missing aesthetics: geometry 我试过的代码:

ggplot() +
  geom_sf(oz_states,mapping=aes())+
  geom_sf(df,mapping=aes()) +
  coord_sf()

我找到的方法都是需要经纬度来绘制数据图,我试过ggmaps或者geom_ploygon但是没有找到正确的方法。有没有一种可能的方法来绘制只有区域标签的地图? 这是我用 tableau 绘制的,这也是使用 r 绘制的预期图:

【问题讨论】:

只是出于好奇,你能不能不从互联网上提取纬度/经度坐标,将其保存为 .csv,然后在名称上加入您当前的数据框?还是您必须在没有互联网的情况下明确执行此操作? @HanselPalencia 从互联网上提取坐标很好,但这对我来说不是一个好选择,我试图在不添加外部信息的情况下这样做。我也很好奇是否有一种方法或包可以用来简单地用标签绘制。 【参考方案1】:

所以本质上,您的第一个问题是您在 ozmaps 包中调用了错误的对象。我是ozmap_states,同时你打电话给你的oz_states

我想出了这个解决方案,我认为它可以满足您的需求并提升它。


df <- data.frame(code = rep(c(0,1,2), 2), name = rep(c("Australia", "New South Wales", "Victoria"), 2), description = rep(c("Vegetables", "Fruit"), 3), count =
             c(854658, 45751, 66211, 667541, 77852, 66211))

library(tidyverse)
library(sf)
library(ozmaps)
library(leaflet)
library(tmap)

states_full <- right_join(df, ozmap_states, by = c("name" = "NAME"))

data <- states_full %>% 
  filter(description == "Fruit") %>% 
  select(name, geometry, count)

ozmap1 = tm_shape(ozmap_states) +tm_polygons()


tmap_mode("view")

ozmap1 + tm_shape(st_as_sf(data)) + tm_fill(col = "count") 

基本上,您只需在正确的连接中使用您的数据,而不是使用我从您的数据创建的示例数据框。您还可以在过滤功能中选择要水果还是蔬菜。

tmap包是一个地图包,可以制作像地图一样的交互式传单。

您可以在这里查看一些教程:https://geocompr.robinlovelace.net/adv-map.html

最终解决方案看起来像这样。

注意:此解决方案使用 lng/lat,但它直接从 ozmaps 包中的 oz 状态图的形状文件中提取它,因此满足了问题的需要。

当您添加更多数据时,将根据数量对澳大利亚更多地区进行着色。

【讨论】:

以上是关于如何在没有坐标的地图上绘制数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何绘制围绕中心坐标相对于设备旋转的真实世界坐标?

如何在图像地图上为asp热点着色?

使用可观察的地理坐标集合在 WP7 的 bing 地图上绘制路线

如何从excel中检索坐标并根据地图绘制点? - MATLAB

在 Open Street Maps 上绘制 ESRI ArcGIS 数据

MATLAB绘制地图超详细教程