查询如何在R中使用ggplot制作世界热图?

问题描述 投票:2回答:1

我想制作一个特定疾病的世界热图。数据集包含国家列表,经纬度和每个国家的病例。这些数据可以通过以下方式获得 此处. 我想用一个世界热图来表示,即案例较多的国家应该有一个较深的颜色,而案例较少的国家应该变浅。我已经使用ggplot和geom_map来创建相同的。代码如下图所示。

library(maps)
library(plyr)
library(gridExtra)

h2 <- read_excel("mapdata1.xlsx")

world_map <- map_data("world")
world_map <- subset(world_map, region!="Antarctica")

gg <- ggplot(h2)
gg <- gg + geom_map(dat=world_map, map = world_map, aes(map_id=region), 
                    fill="white", color="#7f7f7f", size=0.25)
gg <- gg + geom_map(map = world_map, aes(map_id = Country, fill = Cases), size=0.25)
gg <- gg + scale_fill_gradient(low="#fff7bc", high="#cc4c02", name="Total Cases")
gg <- gg + expand_limits(x = world_map$long, y = world_map$lat)
gg <- gg + labs(x="", y="", title="World Hotspots")
gg <- gg + theme(panel.grid=element_blank(), panel.border=element_blank())
gg <- gg + theme(axis.ticks=element_blank(), axis.text=element_blank())
gg <- gg + theme(legend.position="top")
gg

当我运行这段代码时,它显示了热图,但某些国家,如美国,即使它有较多的案例,也是白色的。我不知道为什么会这样?

r ggplot2 data-visualization ggplotly
1个回答
1
投票

原因很简单,美国在你的数据和世界地图中的名称不同。

library(maps)
library(ggplot2)

mydata <- readxl::read_excel("your_path")

mydata$Country[mydata$Country == "United States"] <- "USA"

world_map <- map_data("world")
world_map <- subset(world_map, region != "Antarctica")

ggplot(mydata) +
  geom_map(
    dat = world_map, map = world_map, aes(map_id = region),
    fill = "white", color = "#7f7f7f", size = 0.25
  ) +
  geom_map(map = world_map, aes(map_id = Country, fill = Cases), size = 0.25) +
  scale_fill_gradient(low = "#fff7bc", high = "#cc4c02", name = "Total Cases") +
  expand_limits(x = world_map$long, y = world_map$lat)

创建于2020-05-16由 重读包 (v0.3.0)

© www.soinside.com 2019 - 2024. All rights reserved.