【问题标题】:Shiny dashboard and leaflet using selectInput使用 selectInput 的闪亮仪表板和传单
【发布时间】:2019-05-25 11:18:37
【问题描述】:

我正在尝试将闪亮的仪表板与传单包一起使用。我尝试在仪表板中使用“SelectInput”功能根据所选输入(geoArea)创建反应地图。但是,我无法使传单和 SelectInput 相互连接。

我还想在我的数据集中区分两组并将其绘制在传单/闪亮(列名 “up.and.down” 具有正值和负值)。在 Base R 中,我可以做它使用 tidyverse 包中的过滤器选项并为每个选项提供不同的颜色,但是我不确定这在 Shinydashboard 中是如何工作的。任何有关方面的帮助将不胜感激。

library(shiny)
    library(shinydashboard)
    library(shinydashboardPlus)
    library(leaflet)
    library(tidyverse)



datafile<- read.csv("/Users/prabeshkc/Desktop/stackoverflow data.csv")

`ui<- dashboardPage(
  skin = "blue",
  dashboardHeader(title = "Cluster Map"),
  dashboardSidebar(
    selectInput("Area",label = "Geo Area",
                choices = datafile$geoArea)
  ),
  dashboardBody(
    fluidRow(box(width = 12,leafletOutput(outputId = "mymap")))
  ))`

`server <- function(input, output) {
 data_input<-reactive({
   datafile %>% 
     leaflet() %>% 
     addTiles() %>% 
     addMarkers(lng = datafile$lng,lat = datafile$lat)
 })
  data_input_ordered<-reactive({
    data_input()[order(match(data_input)$geoArea)]
  })`

  `labels<- reactive({
    paste("<p>", datafile$goals,"</p>"),
    paste("<p>", datafile$achieved,"</p>")
  })`

 `output$mymap<- renderLeaflet(
    datafile %>% 
      leaflet() %>% 
      addTiles() %>% 
      addCircleMarkers(lng = datafile$lng,lat = datafile$lat)
  )
}
 shinyApp(ui = ui, server = server)`

【问题讨论】:

  • 添加dput(datafile)
  • 嗨@jyjek 希望这让它更清楚一点。

标签: r shiny leaflet shinydashboard shiny-reactivity


【解决方案1】:

试试这个:

library(shiny)
library(shinydashboard)
library(shinydashboardPlus)
library(leaflet)
library(tidyverse)


datafile<-read.csv("/Users/prabeshkc/Desktop/stackoverflow data.csv") %>% 
  mutate(color=ifelse(up.and.down<0,"red","blue"))

ui<- dashboardPage(
  skin = "blue",
  dashboardHeader(title = "Cluster Map"),
  dashboardSidebar(
    selectInput("Area",label = "Geo Area",
                choices = datafile$geoArea)
  ),
  dashboardBody(
    fluidRow(box(width = 12,leafletOutput(outputId = "mymap")))
  ))

server <- function(input, output) {

  output$mymap<- renderLeaflet({
    validate(need(datafile,"Add file"))
    validate(need(input$Area,"Select Area"))
    datafile %>% 
      filter(geoArea %in% input$Area) %>% 
      leaflet() %>% 
      addTiles() %>% 
      addCircleMarkers(lng = ~lng,lat = ~lat,color=~color,
                       popup = ~paste(paste0("Goals - ",goals),paste0("Achieved - ",achieved), sep="<br>"))
  })
}
shinyApp(ui = ui, server = server)

【讨论】:

    猜你喜欢
    • 2018-07-07
    • 2015-04-22
    • 1970-01-01
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    • 2016-12-09
    • 1970-01-01
    相关资源
    最近更新 更多