首页 > 解决方案 > 如何创建具有梯度比例的信息图表以显示冠状病毒按地区/国家的传播?

问题描述

我只知道一种可以创建这样的地图的方法 - 使用tableau.

但在Tableau中,您可以绘制特定国家/地区的地图 - 无法使用渐变比例绘制其他区域。需要自定义背景地图和地图样式 - 添加额外的地图图层和数据图层。

在此处输入图像描述

Tableau 可能获得 包含有趣区域的纬度经度的数据集,但由于区域的规模不同 - 一个城市可能有一个确诊病例 - 另一个城市可能有 1000 个 - 我想使用梯度比例。

在此处输入图像描述

我的理想地图是这两个例子的组合。

是否有任何其他软件/框架允许在国内创建具有梯度数据比例的世界地图?

并可以直接进入国内地区?因为我想将它连接到解析与某些城市/地区/国家的许多新案例相关的新闻提要的软件。

而不是圆圈,我想显示案例数量的梯度比例。

在此处输入图像描述

标签: rmapstableau-api

解决方案


这是一个很好的起点,使用sf,rnaturalearth包。

install.packages(c("cowplot", "googleway", "ggplot2", "ggrepel", 
                   "ggspatial", "libwgeom", "sf", "rnaturalearth", "rnaturalearthdata"))

library("ggplot2")
theme_set(theme_bw())
library("sf")

library("rnaturalearth")
library("rnaturalearthdata")
library("tidyverse")

world <- ne_countries(scale = "medium", returnclass = "sf")
class(world)

corona <- readxl::read_excel('corona cases.xlsx', sheet = "Sheet1")

world$corona <- NA

for (i in 1:nrow(corona)){
  for (j in 1:nrow(world)){

    country <- as.character(corona[i, 1])

    sov_rows <- which(world$sovereignt %in% country)

    world[sov_rows,"corona"] <- corona[i, 2]

  }

}

sov_rows <- which(world$sovereignt %in% "China")

world[sov_rows,"corona"] <- NA

ggplot(data = world) +
  geom_sf(aes(fill = corona)) +
  scale_fill_viridis_c(option = "plasma", trans = "sqrt")

在此处输入图像描述


推荐阅读