我想使用ggplot,地图和mapdata可视化世界地图上的某些数据
.xls文件的链接为here *
让我们看看代码:
Window
怎么了?以前我没有这样的问题。看起来糟透了。
*任何人都知道更好的免费.xls / .xlsx存储库吗?
答案 0 :(得分:1)
您是否尝试过left_join
而不是合并?
没有mapka数据,就无法调试代码。
答案 1 :(得分:1)
最好给我们一些东西作为代码,以复制您遇到的问题。我能够复制您的代码,而无需使用您提供的链接。我的建议是使用left_join()
代替merge()
和replace_na()
代替for循环。
library(maps)
library(tidyverse)
library(mapdata)
library(ggthemes)
library(mapproj)
m <-
map_data("world")
mapka <-
m %>%
distinct(region) %>%
slice(1:100) %>%
mutate(a = c(1:100)*40)
# replicates your issue
choro <- merge(m, mapka, by = "region", all.x = TRUE)
for (i in 1:nrow(choro)) {
if (is.na(choro$a[i]) == TRUE) {
choro$a[i] <- 0
}
}
ggplot() +
geom_map(
data = choro, map = choro,
aes(long, lat, map_id = region, fill = a)
)
# using left_join and replace_na
choro <-
m %>%
left_join(mapka) %>%
mutate(a = replace_na(a, 0))
ggplot() +
geom_map(
data = choro, map = choro,
aes(long, lat, map_id = region, fill = a)
)