Как использовать несколько входов фрейма данных для Mapdeck add_scatterplot в R Shiny? - PullRequest
1 голос
/ 28 мая 2020

Я нахожу Mapdeck действительно классным альтернативным методом отображения при работе с большими наборами данных в r shiny. Однако мне трудно передать несколько наборов данных, чтобы увеличить сложность итоговой карты.

Например: я пытаюсь заполнить всплывающую подсказку, чтобы создать всплывающее окно с двумя элементами, извлечение информации из второго фрейма данных (для иллюстрации отношения «1 ко многим»). Но я не могу заставить его работать. Есть мысли?

Пример данных

Map_DF <- data.frame("Point_ID" = 1:3, "Latitude" = c(38.05, 39.08, 40.05), "Longitude" = c(-107.00, -107.05, -108.00))
PointUse_DF <- data.frame("Point_ID" = c(1, 1, 2, 2, 3), "PointUse" = c("farm", "house", "farm", "house", "farm"))

Код.

# ################################################################################################
# ################################################################################################
# # Sec 1a. Needed Libaries & Input Files

library(shiny)
library(shinydashboard)
library(mapdeck)
library(dplyr)


################################################################################################
################################################################################################
#UI
ui <- dashboardPage(
    dashboardHeader(), 
    dashboardSidebar(), 
    dashboardBody(
        mapdeckOutput(outputId = 'mapA')
    )
)

################################################################################################
################################################################################################
server <- function(input, output) {


    ##The MapDeck Token
    key <- '## put your own token here ##'
    set_token(key) ## set your access token


    ### The Map
    output$mapA <- renderMapdeck({
     mapdeck() %>%
            add_scatterplot(
                data = Map_DF, 
                lat = "Latitude",
                lon = "Longitude",
                layer_id = 'Point_ID',
                tooltip = c("Point_ID",
                             PointUse_DF$PointUse[Map_DF$Point_ID]  # the idea of passing in a a key and returning multiple items
                            )
             )
    })

}

################################################################################################
################################################################################################
shinyApp(ui = ui, server = server)

1 Ответ

1 голос
/ 29 мая 2020

Всплывающая подсказка отображает столбец объекта data внутри всплывающего окна. Итак, все, что вы хотите отображать во всплывающем окне, должно уже существовать в данных

, в вашем примере вам нужно создать столбец всплывающей подсказки

# Using data.table to rshape the data to give a comma-separated list of 'PointUse' values
library(data.table)

dt <- setDT( PointUse_DF )[, .(info = paste0(PointUse, collapse = ", ")), by = Point_ID]

## Now you can put this onto the map object

Map_DF <- merge(
  x = Map_DF
  , y = dt
  , by = "Point_ID"
  , all.x = T
)

mapdeck() %>%
  add_scatterplot(
    data = Map_DF, 
    lat = "Latitude",
    lon = "Longitude",
    layer_id = 'Point_ID',
    radius_min_pixels = 3,
    tooltip = "info"
    )
  )

enter image description here

...