R tmap tm_facet将值分配给错误的位置

时间:2018-12-31 00:35:04

标签: r tmap

我正在尝试使用tm_facets来显示2005、2050和2080年的数据(在这种情况下为玉米产量)。test.RDS文件可用here

library(tmap)
map.temp <- readRDS("test.RDS")
title <- "Maize rainfed yield <br> (mt/ha)"
legend_title <- "(mt/ha)"
breaks <- c(1.0, 2139.2, 4277.5, 6415.8, 8554)
tm_shape(map.temp) + 
  tm_polygons(col = "value", title = legend_title) +
  tm_facets(by = "year") +
  tm_layout(main.title = title) +
  tm_view(view.legend.position  = c("left", "bottom"))

上面的代码可以执行此操作,但是会以错误的多边形和错误的年份显示数据。要查看此内容,请运行脚本并单击加拿大东北部的暗红色区域。所有三个映射中的弹出窗口都显示AMR_RUS,其值为5,634,但是颜色不同。查看map.temp文件(我正在使用Rstudio进行所有操作)。使用AMR_RUS在FPU上进行过滤。 2005年的值为6047,2050为5634,2080为4406(气候变化将减少该地区的单产)。接下来查看“几何”列中的前两个条目。纬度经度坐标适用于中俄边界沿线地区。阿穆尔河构成边界,AMR_RUS FPU(食品生产单位)位于俄罗斯阿穆尔河以北。

我的代码或数据或tmap中的tm_facet函数是否有问题?

1 个答案:

答案 0 :(得分:1)

不幸的是,我无法找到使用tmap的解决方案,并且不确定为什么要在弹出窗口中将多边形名称和值放错位置。 更新:这似乎是一个tmap错误,已立即修复-请参见tmap issue 268

我知道您要求使用tmap解决方案,但是,值得一提的是,使用mapview探索一种解决方案-检查一下是否适合您:

library(mapview)

breaks <- c(1.0, 2139.2, 4277.5, 6415.8, 8554)

m_2005 <- mapview(map.temp[map.temp$year == 2005, ], 
                  zcol = "value", 
                  at = breaks, 
                  layer.name = "2005 - mt/ha")
m_2050 <- mapview(map.temp[map.temp$year == 2050, ], 
                  zcol = "value", 
                  at = breaks, 
                  layer.name = "2050 - mt/ha")
m_2080 <- mapview(map.temp[map.temp$year == 2080, ], 
                  zcol = "value", 
                  at = breaks, 
                  layer.name = "2080 - mt/ha")

sync(m_2005, m_2050, m_2080) # add ncol = 1, if you wish 1 column representation 

enter image description here