【问题标题】:How to use a custom marker symbol in plotly scattermapbox for R如何在 R 的 plotly scattermapbox 中使用自定义标记符号
【发布时间】:2020-09-08 18:56:14
【问题描述】:

我目前正在开发一个使用交互式地图的小型闪亮应用程序。这个想法很简单:我正在尝试使用纬度/经度坐标在地图中绘制一些点。我不能使用google的API,所以我使用了plotly的散点图,指定了地图布局。

这是我目前所拥有的通用表示:

fig <- plotly::plot_ly(
      data = data,
      lat = data$lat,
      lon = data$long,
      mode = "markers",
      marker = list(size = 10),
      type = 'scattermapbox',
      hovertext = paste0(
        paste0("Some info 1: ", data$field1, "\n"),
        paste0("Some info 2: ", data$field2, "\n"),
        paste0("Some info 3: ", data$field3)
        )
     )

# specify layout as open street map
fig <- fig %>%
      layout(
        mapbox = list(
          style = 'open-street-map',
          zoom = 3,
          center = list(lat = -20.72623, lon = -47.74942))
        ) 
    print(fig)

考虑到我的“数据”数据集有字段和坐标,我得到的结果是这样的:

我无法做的是更改标记符号。根据 plotly 的文档 (https://plotly.com/r/reference/#scatter-mode),它就像定义 symbol = "some_symbol" 一样简单,但这不起作用。我已经看到了一些示例和一些解决方法,但似乎没有一个非常直观。

理想情况下,我想生成一个如下所示的地图:

有谁知道这是否可以通过简单的散点图实现?还有其他方法吗?我在这里遗漏了什么吗?

【问题讨论】:

  • 能否提供生成data的代码
  • 我认为这并不相关,但是...`数据

标签: r data-science r-plotly


【解决方案1】:

我找到了解决方案,尽管使用了不同的包。

使用leaflet 包,我能够使用相同的open-street-map 布局创建地图。默认标记符号/图标是大头针,但您可以使用 svg 文件创建所需的任何自定义图标。指定传单文件 here.

我的具体解决方案是将 hovertext 定义为一组标签,然后简单地调用 leaflet 对象内的 addMarkers 函数。

labels <- lapply(seq(nrow(data)), function(i) {
      paste0( '<p><b> Some information: ', data[i, "field1"], '</b></p>', 
              "<p> Some other information : ", data[i, "field2"] / 1000, ' MWm </p>', 
              "<p> Some different information : ", data[i, "field3"],'</p>')
    })
    
fig <- leaflet::leaflet(data = data) %>% leaflet::addTiles() %>%
       leaflet::addMarkers(
        ~as.numeric(longitude),
        ~as.numeric(latitude),
        label = lapply(labels, htmltools::HTML)
       )
       print(fig)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 2018-03-17
    • 1970-01-01
    • 2022-01-08
    • 2021-01-11
    相关资源
    最近更新 更多