在地图包的文档中似乎没有任何示例,或者在试图用文本或其他信息代替国家名称而不是国家/地区内的任何人的堆栈溢出时出现任何示例。
library(maps)
test <- structure(list(countries = structure(c(3L, 4L, 2L, 1L), .Label = c("France",
"Germany", "Italy", "UK"), class = "factor"), value = c(20, 13,
42, 6)), .Names = c("countries", "value"), row.names = c(NA,
-4L), class = "data.frame")
map.text("world", c("France", "Germany", "Italy", "UK"))
我打算用值替换国家/地区名称。解决方案可能类似于
map.text("world",test$countries, labels=test$values)
但是我无法弄清楚如何让它省去所有不必要的区域标签。
答案 0 :(得分:2)
map.text
尝试将区域与正则表达式匹配,从而导致问题。您可以使用exact = TRUE
来禁用此功能,也可以在每个之后添加$
(行尾)来利用它。但是,英国并不严格地说是一个国家,所以你需要选择组成部分,或以其他方式解决它。
总而言之,
map.text("world", region = c("France$", "Germany$", "Italy$",
"UK:Great Britain", "UK:Northern Ireland"))
返回 哪个更好,如果不是完美的话。设置标签让我们看起来像我们想要的那样:
map.text("world", region = c("France$", "Germany$", "Italy$",
"UK:Great Britain", "UK:Northern Ireland"),
labels = c("France", "Germany", '', "UK", "Italy"))
如果你重建test
:
test <- data.frame(countries = c("Germany$", "France$", "UK:Northern Ireland",
"UK:Great Britain", "Italy$"),
value = c(42, 6, '', 13, 20), stringsAsFactors = FALSE)
所以它看起来像
> test
countries value
1 Germany$ 42
2 France$ 6
3 UK:Northern Ireland
4 UK:Great Britain 13
5 Italy$ 20
您可以将value
列标记为标签:
map.text("world", region = test$countries, labels = test$value)