我正在使用R来组合传单对象和dygraph。
特别是,我希望dygraph(理想情况下是任何htmlwidget)显示为地图上点的弹出窗口。
下面是我粗略尝试生成的代码。
理想情况下,当用户单击标记时,dygraph应该出现在弹出窗口中。
# 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)
这可以使用mapview::popupGraph
来完成,它允许在弹出窗口中包含静态和基于 htmlwidgets 的图形。示例中要更改的相关行是:
ll %>% addMarkers(lng=174.769, lat=-36.853,
popup=mapview::popupGraph(dd, type = "html"))
请注意,这些 html 弹出窗口是通过 iframe 嵌入的,因此可能会出现一些意外行为,尤其是在空间不足的情况下。使用 github 版本的传单,您可以更改弹出窗口的大小以满足您的需求。CRAN 版本的宽度只允许 300px(如果我没记错的话)。