我一直在尝试渲染我在闪亮的仪表板选项卡框中创建的传单地图。传单代码在常规脚本中运行良好,地图在查看器中呈现。但是,当我将代码添加到ui.r和server.r中时,我得到的只是仪表板中应该放置地图的空白区域。我没有收到任何错误,所以我被弄明白了到底是什么错误。我已经读到,当指定地图的高度和宽度时,闪亮有时会出现问题,但是我保留了默认设置,所以我认为这不是问题。我唯一能想到的是,我正在使用的程序包中的某些对象被屏蔽了,而我的某些程序包不是最新的。我不知道这是否会导致此问题。
这是我的代码:
library(shiny)
library(shinydashboard)
library(leaflet)
library(tigris)
library(dplyr)
library(tidyverse)
library(leaflet.extras)
library(rmapshaper)
library(rsconnect)
library(plotly)
library(ggplot2)
library(rgdal)
library(htmltools)
library(shinyWidgets)
library(DT)
melanoma_incidence <- read_excel("Incidence_data.xlsx")
US_states <- tigris::states()
US_Join <- geo_join(US_States, Melanoma_Incidence, by_sp = "GEOID", by_df = "stateFIPS")
US_Join <- subset(US_Join, !is.na(Value))
pal <- colorNumeric("Reds", domain = US_Join$Value)
labels <- sprintf(
"<strong>%s</strong><br/>%g",
US_Join$State, US_Join$Value) %>% lapply(htmltools::HTML)
ui.r
shinyUI(
dashboardPage(
dashboardHeader(title = "UV and Skin Cancer"),
dashboardBody(
tabItems(
tabItem(tabName = "Homepage", h2("UV Exposure and Melanoma"),
tabItem(tabName = "Homepage",
fluidRow(
tabBox(id="National Map",
tabPanel("Melanoma Incidence", leafletOutput("mymap"))
))))))))
server.r
shinyServer(function(input, output) {
output$mymap <- renderLeaflet({
leaflet() %>% addProviderTiles(providers$CartoDB.Positron) %>%
setView(-96, 37.8, 4) %>%
addPolygons(data = US_Join,
fillColor = ~pal(US_Join$Value),
fillOpacity = 0.9,
weight = 0.2,
smoothFactor = 0.2,
label = labels,
labelOptions = labelOptions(
style = list("font-weight" = "normal", padding = "3px 8px"),
textsize = "15px",
direction = "auto")) %>%
addLegend(pal = pal,
values = US_Join$Value,
position = "bottomright",
title = "Incidence")
})
}
)
代码已运行,但是我在闪亮的仪表板中仅留有空白。我在下面发布了一张图片。
任何人都知道为什么我的地图没有渲染?没有错误消息,我很茫然。任何帮助表示赞赏。编辑:我添加了其余的代码和数据。
没有可复制的示例,很难知道。您可能缺少ui.R或server.R中所需的某些全局变量,可能有空值,或者可能正在发生其他情况。
下面的代码至少可以在闪亮的应用程序中使用-至少可以帮助您进行故障排除:
library(leaflet)
library(raster)
#> Loading required package: sp
library(shiny)
US_Join <- getData('GADM', country='US', level=1)
set.seed(1)
US_Join$Value <- sample(1:100, 51, replace=TRUE)
pal <- colorNumeric(
palette = "Blues",
domain = US_Join$Value)
labels <- sprintf(
"<strong>%s</strong><br/> <strong>Incidence:</strong> %g",
US_Join$NAME_1, US_Join$Value
) %>% lapply(htmltools::HTML)
server <- shinyServer(function(input, output) {
output$mymap <- renderLeaflet({
leaflet() %>% addProviderTiles(providers$CartoDB.Positron) %>%
setView(-96, 37.8, 4) %>%
addPolygons(data = US_Join,
fillColor = ~pal(US_Join$Value),
fillOpacity = 0.9,
weight = 0.2,
smoothFactor = 0.2,
label = labels,
labelOptions = labelOptions(
style = list("font-weight" = "normal", padding = "3px 8px"),
textsize = "15px",
direction = "auto")) %>%
addLegend(pal = pal,
values = US_Join$Value,
position = "bottomright",
title = "Incidence")
})
}
)
ui <- tabPanel("Melanoma Incidence", leafletOutput("mymap"))
shinyApp(ui = ui, server = server)