
tmapOutput()
creates a UI element
renderTmap()
renders a tmap map
tmapProxy()
updates a tmap map in view
mode
Adding layers is as usual via the map layer functions like tm_polygons()
.
Removing layers can be done, removing with tm_remove_layer()
.
renderTmap(
expr,
env = parent.frame(),
quoted = FALSE,
execOnResize = TRUE,
mode = NA
)tmapOutput(outputId, width = "100%", height = 400, mode = NA)
tmapProxy(mapId, session = shiny::getDefaultReactiveDomain(), x, mode = NA)
tm_remove_layer(zindex)
A tmap object. A tmap object is created with qtm()
or by stacking tmap-element
s.
The environment in which to evaluate expr
Is expr
a quoted expression (with quote()
)? This is useful if you want to save an expression in a variable
If TRUE
(default), when the plot is resized, the map is regenerated. When set to FALSE
the map is rescaled: the aspect ratio is kept, but the layout will be less desirable.
tmap mode, see tmap_mode()
If not defined, the current mode is used
Output variable to read from
the width and height of the map
single-element character vector indicating the output ID of the map to modify (if invoked from a Shiny module, the namespace will be added automatically)
the Shiny session object to which the map belongs; usually the default value will suffice
the tmap object that specifies the added and removed layers.
the z index of the pane in which the layer is contained that is going to be removed. It is recommended to specify the zindex
for this layer when creating the map (inside renderTmap()
).
Two features from tmap are not (yet) supported in Shiny: small multiples (facets) and colored backgrounds (argument bg.color
of tm_layout()
).
Workarounds for small multiples: create multiple independent maps or specify as.layers = TRUE
in tm_facets()
.
if (interactive() && require("shiny")) {
data(World)
world_vars <- setdiff(names(World), c("iso_a3", "name", "sovereignt", "geometry"))
current.mode <- tmap_mode("plot")
shinyApp(
ui = fluidPage(
tmapOutput("map", height = "600px"),
selectInput("var", "Variable", world_vars)
),
server <- function(input, output, session) {
output$map <- renderTmap({
tm_shape(World) +
tm_polygons(input$var, zindex = 401)
})
}
)
tmap_mode("view")
shinyApp(
ui = fluidPage(
tmapOutput("map", height = "600px"),
selectInput("var", "Variable", world_vars)
),
server <- function(input, output, session) {
output$map <- renderTmap({
tm_shape(World, id = "iso_a3") +
tm_polygons(fill = world_vars[1], zindex = 401)
})
observe({
var <- input$var
tmapProxy("map", session, {
tm_remove_layer(401) +
tm_shape(World, id = "iso_a3") +
tm_polygons(fill = var, zindex = 401)
})
})
},options = list(launch.browser=TRUE)
)
tmap_mode(current.mode)
}
Run the code above in your browser using DataLab