我有4个leaflet对象: A、B、C、D。我想将它们绘制成2x2的网格,但是我一直很难做到这一点。
我的最初想法是使用ggplot和facet_grid,但是ggplot不知道如何处理leaflet类的对象。
希望得到帮助!
我的最初想法是使用ggplot和facet_grid,但是ggplot不知道如何处理leaflet类的对象。
希望得到帮助!
传单(或任何其他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流体页面布局函数的示例:
library(shiny)
leaflet_grid_2 <- fluidPage(
fluidRow(
column(6, A), column(6, B)
),
fluidRow(
column(6, C), column(6, D)
)
)
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)
有一个名为“patchwork”的软件包可能适合您。 Patchwork是ggplot的扩展,因此它应该可以很好地与您的地图配合使用。 您可以使用简单的“+”“/”命令来排列图。
请参见https://cran.r-project.org/web/packages/patchwork/vignettes/patchwork.html
shiny
或flexdashboard
来创建网格。它们都可以处理这种类型的输出。 - trohmapview
库有一些处理此类问题的函数。请参见此网页上的同步部分。 - Andy W