2017-01-14 20 views
0

Я использую R, чтобы объединить объект листовки и dygraph.Добавление htmlwidget к всплывающему окну объекта листовки

В частности, мне бы хотелось, чтобы в качестве всплывающего окна на карте отображалось изображение (и в идеале любого htmlwidget).

ниже - это код, который я грубо пытаюсь произвести.

В идеале, когда пользователь нажимает на маркер, в всплывающем окне должен появиться значок.

# example dygraph 
    library(dygraphs) 
    lungDeaths <- cbind(mdeaths, fdeaths) 
    dygraph(lungDeaths) 
    dd <- .Last.value 

    # example leaflet map 
    library(leaflet) 
    leaflet() %>% 
    addTiles() %>% 
    addMarkers(lng=174.768, lat=-36.852, 
       popup="The birthplace of R") 
    ll <- .Last.value 

    # I would like to be able to incorporate the dygraph as the popup, 
    # however the below doesn't work. 
    ll %>% addMarkers(lng=174.769, lat=-36.853, 
        popup=dd) 


    # the end goal is to have this combined in a shiny output 
    # below is a rough skeleton to add what I would expect to code 
    # in order to be able to add the dygraph into the popup 
    library(shiny) 
    library(leaflet) 
    library(dygraphs) 

    ui <- fluidPage(
    leafletOutput("mymap") 
) 

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

    output$mymap <- renderLeaflet({ 
     leaflet() %>% 
     addTiles() %>% 
     addMarkers(lng=174.768, lat=-36.852, 
        popup=dygraph(lungDeaths)) 

    }) 
    } 

    shinyApp(ui, server) 

ответ

2

Это может быть сделано с помощью mapview::popupGraph, которая позволяет включать статические, а также htmlwidgets графики, основанные на всплывающих окнах. Соответствующая строка в вашем примере, чтобы изменить это:

ll %>% addMarkers(lng=174.769, lat=-36.853, 
        popup=mapview::popupGraph(dd, type = "html")) 

Обратите внимание, тезисы HTML всплывающие окна заделаны с помощью фрейма, так что может быть какой-то неожиданное поведение, особенно когда не хватает места. С помощью github версии листовка вы можете изменить размер всплывающего окна в соответствии с вашими потребностями. Версия CRAN допускает ширину всего 300 пикселей (если я не ошибаюсь).

+0

Спасибо! Для большого набора точек у вас есть предложения о том, как получить разные графики для каждой точки? –

+0

Попробуйте передать список графиков. См. '### example: html -----' (последний пример) в '? PopupGraph'. Хотя имейте в виду, что для большого набора точек это может стать очень медленным и не реагирующим, поскольку вы забиваете много html-кода на одну страницу. – TimSalabim