提前为文字墙道歉。我正在创建一种新型的等值线图,其中国家根据不同的分类变量进行着色。我设置应用程序的方式是,根据每个国家/地区的每个基础变量的级别为每个国家/地区分配一个 RGB 值,并且我希望地图显示该 RGB 值——看起来很简单,对吧?
不幸的是,大多数地图可视化似乎都想为我选择颜色,而不是让我选择。我能做的最好的事情是将数据视为分类数据,最终得到与国家相同数量的分类。这对 rworldmap 非常有效。问题是,我正在开发它以供网络使用,我真的很想有工具提示,以便您可以将鼠标悬停在特定国家/地区,这不适用于 rworldmap,因为它只是一个基本情节。此外,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 包中的 Shiny 绑定的问题. 我最终选择了 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 中实现,这将很好地用于此目的?
谢谢!