任何人都可以建议在Shiny中使用良好的世界地图可视化吗?

时间:2015-05-05 15:16:40

标签: r shiny choropleth rworldmap

提前抱歉留言。我正在创建一种新型的等值区域图,其中各国基于不同的分类变量进行着色。我设置应用程序的方式,我根据每个国家/地区的每个基础变量的级别为每个国家分配RGB值,我希望地图显示RGB值 - 看起来很简单,对吧?

不幸的是,大多数地图可视化似乎都想为我做颜色选择,而不是让我选择。我能做的最好的事情就是将数据视为分类数据,最终我的数据类别与国家相同。这对rworldmap非常有效。问题是,我正在开发这个用于网络使用,我真的很想拥有工具提示,这样你就可以将鼠标悬停在一个特定的国家/地区,但这并不适用于rworldmap,因为它&#39 ; s只是一个基本情节。此外,rworldmap输出看起来并不是特别好看。

这是我用过的代码:

mapjoin <- joinCountryData2Map(db, joinCode="ISO3", 
  nameJoinColumn="iso", mapResolution="high")

mapCountryData(mapjoin, nameColumnToPlot="iso", addLegend=FALSE,
  catMethod="categorical", colourPalette=db$rgb, mapTitle=input$year)

我已尝试使用googleVis,但我遇到了很多麻烦 - 地图会无缘无故地消失,我不得不重新加载页面,我认为这是一个问题googleVis包中的绑定。我最终选择了googleCharts(https://github.com/jcheng5/googleCharts),它解决了绑定问题。

但是,我仍然遇到问题。

这里是反应函数:

output$mapviz <- reactive({
  db <- genRgb()

  list(
    data=googleDataTable(db[c("country", "id")]),
    options=list(legend="none", projection="kavrayskiy-vii", colors=db$rgb)
  )
)}

这里是输出调用:

googleGeoChart("mapviz", width="100%", height="780px")

正如您所看到的,没有一种特定的方法可以让JS应用程序知道它的分类数据,因此,它使用182个不同的渐变停止点进行了等距离。通常这种方法很好,但偶尔会发生一些奇怪的事情,一个国家神秘地终结于颜色之间的中间位置。我总是可以说这是一个问题,因为某些国家应该是特定的颜色(例如,美国将显示为#0000FF,而当它不是时,它就非常明显)。我发现我可以使用不同的图表类型(应用程序使用其他googleCharts类型),然后返回到地图,通常它已修复。所以它完全不一致。

因此,考虑到这一点,任何人都可以建议一个更好的地图工具,我可以在Shiny中实现这个工具可以很好地用于此目的吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

查看传单:

https://rstudio.github.io/leaflet/

它允许你:

  • 为每个包含更多数据的shapefile提供弹出窗口
  • 根据dbf文件中的数据,在R中显式设置shapefile的颜色。
  • 使用开放的地图背景

一些示例代码(并非所有代码都可能相关):

map <- leaflet()%>%
        addTiles(urlTemplate = url, attribution = HTML(attrib))%>%
        addPolygons(data = sub_shape,
                    fill = TRUE,
                    fillColor = colors$color, #set color here
                    fillOpacity = .8,
                    stroke = TRUE,
                    weight = 3,
                    color = "white",
                    dashArray = c(5,5),
                    popup = pops
        )