闪亮的应用程序Covid数据(如何过滤和排序?)

问题描述 投票:0回答:1

我正在构建一个闪亮的应用程序来显示 COVID-19 数据。我有一个长格式的文件,显示日期、县、阳性病例、康复和死亡人数。我正在尝试制作一个应用程序,用户可以从下拉菜单中选择一个县,它将在页面上显示 3 个阳性、康复和死亡图表。图表的 x 轴为日期,y 轴为变量。附件是我到目前为止的脚本。我尝试了很多不同的方法,但我不知道该怎么做。我仍在学习 R,之前没有使用 ShinyApp 的经验。 我想我的 ggplot 和输出/UI 是正确的,服务器逻辑让我陷入了困境。

7/23/2020:我更新了代码。我看了一些 ggplot 。当我运行该应用程序时,我现在有了我想要的下拉菜单,但正在显示图表。当我在控制台中创建 ggplot 以确保代码独立运行时,我缺少图表的中间部分?

library(shiny)
library(dplyr)
library(tidyr)
library(plotly)
library(ggplot2)
library(rsconnect)


df <- read.csv("C:/Users/Nathan May/Desktop/Research Files (ABI)/Covid/Data For Shiny/Appended_File/Appended_Scraped_Files.csv") #INSERT PATH SINGLE FILE OPTION

datapos <- df[c(2,6,3)]

rsconnect::setAccountInfo(name='nathanjmay', token='A3CF4CC3DE0112B8B9F8D0BA429223D3', secret='TNwC9hxwZt+BffOhFaXD3FQsMg3eQnfaPGr0eE8S')

#UI

ui <- fluidPage(
titlePanel("COVID-19 in Arkansas Counties"),
  fluidRow(
    column(
      width=4,
      selectizeInput("County", label=h5("County"), choices= data$Counties, width="100%")
    )),
  fluidRow(
    plotOutput(outputId = "Positive")
  ),
  fluidRow(
    plotOutput(outputId = "Recoveries")
  ),
  fluidRow(
    plotOutput(outputId = "Deaths")
  ),)
  
#SERVER

server= function(input, output) {

  data <- reactive({
    datapos %>% filter(County == input$County)
  
#GGPLOT2 for Positive
  output$Positive -> renderPlot(ggplot(data=datapos, aes(x=Day, y=Positive)) + 
                                geom_bar(stat="identity"))

#Recoveries
  output$Recoveries -> renderplot()

#Deaths
  output$Deaths -> renderplot()
  })
  }


shinyApp(ui=ui, server=server)
r ggplot2 shiny
1个回答
0
投票

您将所有反应式表达式分配给服务器逻辑中的

data
对象,查看关闭大括号的位置。因此,所有内容都被包装到
data
中,而关于
plotOutput
的任何内容(即
output$Positive
output$Recoveries
output$Death
)均在服务器逻辑中指定。而且
reactive()
的使用方式一开始感觉有点别扭。这是我的超级简单的应用程序,用于说明您应该使用
reactive()
做什么。再次注意打开和关闭大括号和圆括号的位置。

所以这里定义的反应链是:

input$state
>>
dat
通过
reactive()
>>
output$dummy
通过
renderPlot()

library(shiny)
library(dplyr)
library(ggplot2)

#### Fake data
df <- data.frame(state = rep(c("FL", "GA"), each = 2),
                 x = rnorm(4),
                 y = rnorm(4))

#### UI
ui <- fluidPage(
    titlePanel("Old Faithful Geyser Data"),
    sidebarLayout(
        selectInput("state", "Choose a state:",
                    list(`Florida` = "FL",
                         `Georgia` = "GA")
        ),

        mainPanel(
           plotOutput("dummy")
        )
    )
)

#### Server
server <- function(input, output) {
    ## Essential dat is the filtered df
    dat <- reactive({
        df %>%
            filter(state == input$state)
    })
    
    ## Use dat() to access the filtered df instead of dat
    output$dummy <- renderPlot({
      ggplot(dat()) +
            geom_point(aes(x = x, y = y))
    })
}

# Run the application 
shinyApp(ui = ui, server = server)
© www.soinside.com 2019 - 2024. All rights reserved.