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

时间:2018-09-04 12:13:06

标签: r ggplot2

我查找了“使用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)
  

unit(x,default.units)中的错误:“ x”和“ units”的长度必须大于0

1 个答案:

答案 0 :(得分:2)

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

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

要允许ggplot在两者之间匹配,请按以下方式转换MAP,以将大小写混合的区域名称转换为所有小写字母: MAP$region <- tolower(MAP$region)