r语言 - 选择闪亮传单的输入



我正在尝试使用shiny构建带有传单的地图,但是我的代码不会根据所选输入更改传单地图。有谁知道如何让下面的代码对选择输入做出反应?我尝试使用 get 函数执行此操作,但无法成功。任何帮助将不胜感激!

这是我的数据:

> datamap
Country.code EVENTONE EVENTTWO EVENTTHREE
1  Bosnia and Herzegovina       11        1          5
2             South Korea        1        4          4
3             Philippines        1        5          6
4               Indonesia        1        6          8
5                Thailand        1        0          9
6                Mongolia        1        0          3
7      Russian Federation        1        0          4
8                 Ukraine        1        0          8
9                Slovenia        1        0          5
10               Mongolia        1        0          0
11               Pakistan        1        0          0
12             Bangladesh        1        0          0

这是我的代码:

library(shiny)
library(rworldmap) 
library(ggplot2)

shinyUI(fluidPage( 
fluidRow(h1("Events in the World", align = "center")),
fluidRow(
column(2,
selectInput("var", "Choose the Type Event:",
choices=c("Event One" = "EVENTONE", 
"Event Two" = "EVETNTWO", 
"Event Three" = "EVENTTHREE"))
),
column(10,
tabsetPanel(
tabPanel("Map View", leafletOutput("TheMap", width = "100%")
)
) #end tabset panel
)
) 
))
shinyServer(function(input, output) {
datamap <- read.csv(".../Documents/R Directory/App-4/mapexcel4CSV.csv",             
stringsAsFactors=FALSE, header=TRUE)
sPDF <- joinCountryData2Map(datamap, joinCode='NAME',       
nameJoinColumn='Country.code')
sPDF <- sPDF[sPDF$ADMIN!='Antarctica',]
output$TheMap <- renderLeaflet({
mapselect <- get(input$var)
pal <- colorBin("YlOrRd", domain = mapselect) 
labels <- sprintf(
"<strong>%s</strong><br/>Number of events: %g</sup>",
sPDF$NAME, sPDF$mapselect
) %>% lapply(htmltools::HTML)
TheMap<- leaflet(data = sPDF) %>% addTiles() %>% addPolygons(stroke = FALSE) %>% addPolygons(
fillColor = ~pal(mapselect),
weight = 2,
opacity = 1,
color = "white",
dashArray = "3",
fillOpacity = 0.7,
highlight = highlightOptions(
weight = 5,
color = "#666",
dashArray = "",
fillOpacity = 0.7,
bringToFront = TRUE),
label = labels,
labelOptions = labelOptions(
style = list("font-weight" = "normal", padding = "3px 8px"),
textsize = "15px",
direction = "auto"))
}
)  
})
shinyApp(ui = ui, server = server)

任何帮助将不胜感激!

我想这就是你的目标:

library(shiny)
library(rworldmap) 
library(ggplot2)
library(leaflet)

ui <-  shinyUI(fluidPage( 
fluidRow(h1("Events in the World", align = "center")),
fluidRow(
column(2,
selectInput("var", "Choose the Type Event:",
choices=c("Event One" = "EVENTONE", 
"Event Two" = "EVENTTWO", 
"Event Three" = "EVENTTHREE"))
),
column(10,
tabsetPanel(
tabPanel("Map View", leafletOutput("TheMap", width = "100%")
)
) #end tabset panel
)
) 
))
server <- shinyServer(function(input, output) {
datamap <- read.csv("E:/test.csv",             
stringsAsFactors=FALSE, header=TRUE)
sPDF <- joinCountryData2Map(datamap, joinCode='NAME',       
nameJoinColumn='Country.code')
sPDF <- sPDF[sPDF$ADMIN!='Antarctica',]
legVal <-  c(min(datamap[,-1]), max(datamap[,-1]) )
output$TheMap <- renderLeaflet({
mapselect <- input$var
pal <- colorBin("YlOrRd", domain = as.numeric(sPDF[[mapselect]]))
labels <- sprintf(
"<strong>%s</strong><br/>Number of events: %g</sup>",
sPDF$NAME, sPDF[[mapselect]]
) %>% lapply(htmltools::HTML)
TheMap<- leaflet(data = sPDF) %>% addTiles() %>% addPolygons(stroke = FALSE) %>% addPolygons(
fillColor = ~pal(as.numeric(sPDF[[mapselect]])),
weight = 2,
opacity = 1,
color = "white",
dashArray = "3",
fillOpacity = 0.7,
highlight = highlightOptions(
weight = 5,
color = "#666",
dashArray = "",
fillOpacity = 0.7,
bringToFront = TRUE),
label = labels,
labelOptions = labelOptions(
style = list("font-weight" = "normal", padding = "3px 8px"),
textsize = "15px",
direction = "auto"))%>% addLegend("bottomleft", pal = pal, value = legVal)
}
)  
})
shinyApp(ui = ui, server = server)

希望对您有所帮助!

最新更新