网格中的多个小传单

8
我有4个leaflet对象: A、B、C、D。我想将它们绘制成2x2的网格,但是我一直很难做到这一点。
我的最初想法是使用ggplot和facet_grid,但是ggplot不知道如何处理leaflet类的对象。
希望得到帮助!

1
传单输出是一个htmlwidget。我建议使用shinyflexdashboard来创建网格。它们都可以处理这种类型的输出。 - troh
1
mapview 库有一些处理此类问题的函数。请参见此网页上的同步部分。 - Andy W
或者查看此页面,以了解在网格中显示多个地图的示例。 - TimSalabim
3个回答

11

传单(或任何其他htmlwidgets)可以与htmltools :: tagList相结合。

在这种情况下,一个简单的html table可以处理布局:

library(htmltools)

leaflet_grid <- 
  tagList(
    tags$table(width = "100%",
      tags$tr(
        tags$td(A),
        tags$td(B)
      ),
      tags$tr(
        tags$td(C),
        tags$td(D)
      )
    )
  )

您可以直接将leaflet_grid放在knitr代码块中,或使用

browsable(leaflet_grid)

在控制台中呈现它。

使用Shiny流体页面布局

使用Shiny流体页面布局函数的示例:

library(shiny)

leaflet_grid_2 <- fluidPage(
  fluidRow(
    column(6, A), column(6, B) 
  ),
  fluidRow(
    column(6, C), column(6, D) 
  )
)

使用 leafsync

library(leafsync)

要同步所有面板的缩放,请使用sync

sync(A, B, C, D)

而且,latticeView 将创建未进行同步的面板。

latticeView(A, B, C, D)

(请参见https://r-spatial.github.io/mapview/articles/articles/mapview_05-extras.html


0
你可能希望从上面的4x4 HTML输出中提取一个静态图像。为此,你可以使用webshot包:
webshot::webshot(html, directory_to_drop_png_of_html)

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接