You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言的世界地图上添加数值标签?

如何在rworldmap绘制的地图上添加数值标签

我希望地图呈现为带有国家数值标注的填色地图,请问如何为当前绘制的地图添加数值标签?以下是我目前的代码:

library(rworldmap)

instorks_trends <- data.frame(
  Country = c("Portugal", "Spain", "Belgium", "Denmark", "Germany", "France", "Netherlands", "Sweden", "Switzerland","Liechtenstein", "Luxembourg","Finland", "Estonia", "Latvia", "Lithuania", "Austria", "Poland", "Russia", "Slovakia", "Slovenia", "Czech Republic", "Ukraine", "Hungary", "Belarus", "Albania", "Bulgaria", "Greece", "Croatia", "Italy", "Macedonia", "Moldova", "Romania", "Serbia", "Montenegro", "Kosovo", "Turkey", "Algeria", "Morocco", "Libya", "Tunisia", "Armenia", "Azerbaijan", "Georgia", "Iran","Iraq", "Israel", "Syria", "Uzbekistan","Tajikistan","Kazakhstan","Kyrgyzstan","Turkmenistan", "South Africa"),
  '2014' = c(11691, 46000, 105, 2, 6152, 2579, 950, 44, 376, 6, 2, 1, 5000, 13900, 19500, 391, 52735, 9000, 1231, 266, 792, 40000, 4950, 22300, 4, 5671, 2357, 1756, 262, 817, 190, 4374, 1248, 1, 40, 8693, NA, 2931, 1400,NA, 644, 278, 104, NA, 70, NA, 4, 1200, 8, 24, 20, 0, NA),
  '2004' = c(7685, 33217, 50, 3, 4482, 941, 523, 29, 198, 0, 0, 0, 4500, 10600, 13000, 395, 52500, 10200, 1331, 240, 814, 30000, 5300, 21362, 3, 4826, 2157, 1700, 70, NA, NA, 5000, NA, NA, NA, 6195, 6601, 1802, 25, 572, 548, NA, NA, NA, NA, NA, NA, 745, NA, NA, NA, NA, 6)
)

world_map <- getMap(resolution = "coarse")

joined_map <- joinCountryData2Map(instorks_trends, joinCode = "NAME", nameJoinColumn = "Country")

mapCountryData(joined_map, nameColumnToPlot = "X2014", catMethod = "quantiles", mapRegion = "Europe",
               missingCountryCol = gray(0.8), colourPalette = "red",
               mapTitle = "", addLegend = FALSE, borderCol = "black") 

解决方案

可以通过提取国家中心坐标,结合text()函数添加数值标签,修改后的完整代码如下:

library(rworldmap)

instorks_trends <- data.frame(
  Country = c("Portugal", "Spain", "Belgium", "Denmark", "Germany", "France", "Netherlands", "Sweden", "Switzerland","Liechtenstein", "Luxembourg","Finland", "Estonia", "Latvia", "Lithuania", "Austria", "Poland", "Russia", "Slovakia", "Slovenia", "Czech Republic", "Ukraine", "Hungary", "Belarus", "Albania", "Bulgaria", "Greece", "Croatia", "Italy", "Macedonia", "Moldova", "Romania", "Serbia", "Montenegro", "Kosovo", "Turkey", "Algeria", "Morocco", "Libya", "Tunisia", "Armenia", "Azerbaijan", "Georgia", "Iran","Iraq", "Israel", "Syria", "Uzbekistan","Tajikistan","Kazakhstan","Kyrgyzstan","Turkmenistan", "South Africa"),
  '2014' = c(11691, 46000, 105, 2, 6152, 2579, 950, 44, 376, 6, 2, 1, 5000, 13900, 19500, 391, 52735, 9000, 1231, 266, 792, 40000, 4950, 22300, 4, 5671, 2357, 1756, 262, 817, 190, 4374, 1248, 1, 40, 8693, NA, 2931, 1400,NA, 644, 278, 104, NA, 70, NA, 4, 1200, 8, 24, 20, 0, NA),
  '2004' = c(7685, 33217, 50, 3, 4482, 941, 523, 29, 198, 0, 0, 0, 4500, 10600, 13000, 395, 52500, 10200, 1331, 240, 814, 30000, 5300, 21362, 3, 4826, 2157, 1700, 70, NA, NA, 5000, NA, NA, NA, 6195, 6601, 1802, 25, 572, 548, NA, NA, NA, NA, NA, NA, 745, NA, NA, NA, NA, 6)
)

world_map <- getMap(resolution = "coarse")

joined_map <- joinCountryData2Map(instorks_trends, joinCode = "NAME", nameJoinColumn = "Country")

# 绘制基础填色地图
mapCountryData(joined_map, nameColumnToPlot = "X2014", catMethod = "quantiles", mapRegion = "Europe",
               missingCountryCol = gray(0.8), colourPalette = "red",
               mapTitle = "", addLegend = FALSE, borderCol = "black") 

# 提取国家中心经纬度及对应2014年数值
label_info <- data.frame(
  lon = joined_map$centroidLon,
  lat = joined_map$centroidLat,
  value = joined_map$X2014
)

# 过滤无数据的国家
label_info <- na.omit(label_info)

# 添加数值标签,可调整cex(字体大小)、col(颜色)参数
text(label_info$lon, label_info$lat, labels = label_info$value, cex = 0.6, col = "black")

关键说明

  • joined_map对象自带centroidLon和centroidLat字段,对应每个国家的中心坐标
  • 用na.omit()过滤掉没有2014年数据的国家,避免绘制无效标签
  • 通过text()函数在坐标位置添加数值,可根据地图大小调整cex参数控制标签字体大小

内容的提问来源于stack exchange,提问作者user22887359

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 15:02:06