1

提前为文字墙道歉。我正在创建一种新型的等值线图,其中国家根据不同的分类变量进行着色。我设置应用程序的方式是,根据每个国家/地区的每个基础变量的级别为每个国家/地区分配一个 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 中实现,这将很好地用于此目的?

谢谢!

4

1 回答 1

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
        )
于 2015-05-05T16:04:07.543 回答