首页 > 解决方案 > 单位(x,default.units)中的ggplot错误:'x'和'units'的长度必须> 0

问题描述

我查找了“使用 ggplot2_Cheat Sheet_Rstudio _Maps 进行数据可视化”并尝试制作日文版(但它没有像上面那样工作)。请帮助我理解为什么在这种情况下会出现错误“单元错误(x,....”)。

library(ggplot2)
library(mapdata)

all = map_data("japan")
unique(all[, 5])
pref = c( #47 Japanese prefectures
  "Hokkaido",  "Aomori",    "Iwate",     "Miyagi",    "Akita",     "Yamagata",  "Fukushima",
  "Ibaraki",   "Tochigi",   "Gunma",     "Saitama",   "Chiba",     "Tokyo",     "Kanagawa", 
  "Niigata",   "Toyama",    "Ishikawa",  "Fukui",     "Yamanashi", "Nagano",    "Gifu",     
  "Shizuoka",  "Aichi",     "Mie",       "Shiga",     "Kyoto",     "Osaka",     "Hyogo",    
  "NARA",      "Wakayama",  "Tottori",   "Shimane",   "Okayama",   "Hiroshima", "Yamaguchi",
  "Tokushima", "Kagawa",    "Ehime",     "Kochi",     "Fukuoka",   "Saga",      "Nagasaki", 
  "Kumamoto",  "Oita",      "Miyazaki",  "Kagoshima", "Okinawa")

number = sample(1:20, 47, replace=TRUE) #random number
all_pref = as.data.frame(matrix(c(pref, number), 47, 2))

JP = ggplot2::map_data("japan")

DATA = data.frame(sample = as.numeric(all_pref$V2), 
                  japan = tolower(as.character(all_pref$V1)))

MAP = JP
k = ggplot(DATA, aes(fill = sample))

k + 
  geom_map(aes(map_id = japan), map=MAP) + 
  expand_limits(x = MAP$long, y = MAP$lat)

单位错误(x,default.units):“x”和“单位”的长度必须 > 0

标签: rggplot2

解决方案


您在 MAP 和 DATA 之间匹配的地名是不同的混合大小写和小写。

MAP$region混合了大写和小写字母,例如“北海道”,而DATA$japan所有小写名称,例如“北海道”。

要允许 ggplot 在两者之间进行匹配,请MAP进行如下转换以将混合大小写的区域名称转换为全部小写: MAP$region <- tolower(MAP$region)


推荐阅读