R 使用tmap在形状上弹出

R 使用tmap在形状上弹出,r,popup,leaflet,tmap,R,Popup,Leaflet,Tmap,我用tmap制作了一张地图,用传单包含在一个闪亮的应用程序中。我大致有我想要的:一个基于空间多边形框架的填充颜色的专题地图,当你点击地图时,一个包含多边形额外信息的弹出窗口。我想在单击时更改弹出窗口以获得更好的布局。默认情况下,将显示数据集中的名称,但它并不真正方便用户使用。 这是一个可复制的例子 library(tmap) library(leaflet) data(Europe) tmap_mode("view") carte <- tm_shape(Europe) + tm_

我用
tmap
制作了一张地图,用
传单
包含在一个闪亮的应用程序中。我大致有我想要的:一个基于空间多边形框架的填充颜色的专题地图,当你点击地图时,一个包含多边形额外信息的弹出窗口。我想在单击时更改弹出窗口以获得更好的布局。默认情况下,将显示数据集中的名称,但它并不真正方便用户使用。
这是一个可复制的例子

library(tmap)
library(leaflet)

data(Europe)

tmap_mode("view")
carte <- tm_shape(Europe) +
  tm_borders(alpha = 0.5) +
  tm_fill(col = "well_being",
          id = "name",
          popup.vars = c("life_exp","well_being"))
tmap_leaflet(carte)
衍生多边形中的错误(数据、lng、lat、缺失(lng)、缺失(lat)、“添加多边形”): 未找到多边形数据;请提供数据和/或lng/lat参数

谢谢

免责声明:黑客 我将首先警告这是一个黑客行为,但代码应该可以实现您的目标。也许,在
tmap
repo上提交一个问题,以获得更多的弹出选项

library(tmap)

data(Europe)

carte2 <- tm_shape(Europe) +
  tm_borders(alpha = 0.5) +
  tm_fill(col = "well_being")

# this is a hack, since I do not see a clean mechanism to accomplish
# look at the leaflet map calls for addPolygons
leafmap <- tmap_leaflet(carte2)

# if you are ok using another package
# install.packages("listviewer")
# listviewer::jsonedit(leafmap$x$calls)

# if not then
str(leafmap$x$calls, max.level=2)

# addPolygons is the call we need to adjust
#  in this example it is the fourth call
str(leafmap$x$calls[[4]], max.level=2)
# the popups are the fifth element of the args
leafmap$x$calls[[4]]$args[[5]]
# adjust these how you like
leafmap$x$calls[[4]]$args[[5]] <- leaflet:::evalFormula(
  ~paste0(
    "<b>",name,"</b><br/>",
    "Life Expectancy : ", life_exp,
    " <br/>Well being : ", format(well_being, digits=4)
  ),
  data=Europe
)

# warned this is a hack
库(tmap)
数据(欧洲)

carte2在开发版本中,popup.vars的矢量名称现在用作标签。此外,我还为每个图层功能添加了popup.format。可以分别为每个变量指定数字格式

data(World, metro)
metro$growth <- (metro$pop2020 - metro$pop2010) / (metro$pop2010 * 10) * 100

ttm()
tm_shape(metro) +
    tm_bubbles("pop2010", col = "growth", 
               border.col = "black", border.alpha = .5, 
               style="fixed", breaks=c(-Inf, seq(0, 6, by=2), Inf),
               palette="-RdYlBu", contrast=1, 
               title.size="Metro population", 
               title.col="Growth rate (%)", id="name", 
               popup.vars=c("Population (2010)"="pop2010", "Population (2020)"="pop2020", "Growth (%)"="growth"),
               popup.format=list(growth=list(digits=4)))
数据(世界、地铁)

metro$growth难道你不能在你的数据集中更改变量的名称吗?我可以,但我将数据用于其他图形,需要重写其他函数。如果可能的话,我希望对弹出窗口有一个更好的控制(例如,我不喜欢3位数以上的数字用逗号分隔)。建议使用向量名。我会成功的,太好了!这确实是一个黑客,但它工作得很好。我将在
tmap
repo上提交问题。谢谢伟大的谢谢你,我会等到它被推到CRAN后再把它放到我的应用程序中。
data(World, metro)
metro$growth <- (metro$pop2020 - metro$pop2010) / (metro$pop2010 * 10) * 100

ttm()
tm_shape(metro) +
    tm_bubbles("pop2010", col = "growth", 
               border.col = "black", border.alpha = .5, 
               style="fixed", breaks=c(-Inf, seq(0, 6, by=2), Inf),
               palette="-RdYlBu", contrast=1, 
               title.size="Metro population", 
               title.col="Growth rate (%)", id="name", 
               popup.vars=c("Population (2010)"="pop2010", "Population (2020)"="pop2020", "Growth (%)"="growth"),
               popup.format=list(growth=list(digits=4)))