我在使用源自宽格式的数据列作为 Shiny 地图应用程序的动态输入时遇到问题。
在应用程序中,我希望能够:
- 在下拉类型菜单中选择点数据的参数(以下示例数据:16 个位置,6 个参数)并调整符号大小以使用滑块表示所选参数的绝对值(以帮助可视化从零开始的正负差异)
mapview
选择任何参数后,保留在的弹出功能中查看所有参数(列)的能力(mapview
将列转换为弹出的行)。从弹出/查看的角度来看,过滤的长格式似乎data.frame
会丢失数据- 在鼠标悬停标签上保留(非绝对)原始值(例如
-7.3
图像中的)
除了拥有这些功能之外,我不知道是否/在哪里需要设置反应式包装器?或者,也许我可以使用另一个以地图为中心的库更轻松地完成所有工作(即使mapview
在很多事情上都很棒)?
我的尝试在下面被注释掉了——用户界面按预期工作,除了没有下拉可选择性——应用程序仅限于一个带有mapview(df["param1"]
and的工作下拉参数cex = param1 * input$cex
。
这是可重现的app.r
:
library(tidyverse)
library(sf)
library(shiny)
library(shinydashboard)
library(leaflet)
library(mapview)
## sample earthquake data ##
set.seed(6)
lat <- rnorm(16,-34, 9)
lon <- rnorm(16,-67,.3)
param1 <- rnorm(16, 10, 40) %>% round(1)
param2 <- rnorm(16, 25, 3) %>% round(1)
param3 <- rnorm(16, -18, 10) %>% round(1)
param4 <- rnorm(16, -200, 93) %>% round(1)
param5 <- rnorm(16, 0.1, .09) %>% round(1)
param6 <- rnorm(16, 417, 33) %>% round(1)
df <- data.frame(lat, lon, param1, param2, param3, param4, param5,
param6)
df <- st_as_sf(df, coords = c("lon", "lat"), crs = 4326)
paramchoices <- colnames(df) %>% .[.!="geometry"]
colorpal = mapviewPalette("mapviewSpectralColors")
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(
sliderInput("cex", "Symbol Size",
min = 0.000001, max = 10, value = 1, step = 0.000001
),
selectizeInput(
"parameter", "Earthquake Parameter", choices = paramchoices,
selected = c("param1"),
multiple = FALSE)
),
dashboardBody(
tags$style(type = "text/css", "#mapplot {height: calc(100vh - 80px) !important;}"),
leafletOutput("mapplot")
)
)
server <- function(input, output) {
# df <- reactive ({
# df %>% mutate(selectedparameter = input$parameter,
# selectedparameter_abs = abs(selectedparameter))
# })
output$mapplot <- renderLeaflet({
m <- mapview(df["param1"], #mouseover column
#m <- mapview(df["selectedparameter"],
cex = param1 * input$cex, #marker size column
#cex = df$selectedparameter_abs * input$cex,
col.regions = colorpal(100),
alpha.regions = 0.3,
legend = TRUE,
popup = popupTable(df),
layer.name = "selectedparam[unit]")
m@map
}
)}
shinyApp(ui, server)
与绝对值部分相关的更多信息 -基于地图视图中不同变量的点颜色和符号大小
谢谢你。