【问题标题】:multiple plots in r with filter in rr中的多个图,r中带有过滤器
【发布时间】:2021-09-09 08:55:40
【问题描述】:

早安,

我正在尝试使用我的代码设置多个绘图。 目前我只能绘制一个复选框输入数据

是否 any1 有一个想法,我可以如何更改我的服务器代码,以便它可以在一个图中绘制多个图形?

这是我工作 atm 的图片 https://i.stack.imgur.com/M6xcz.png

提前致谢

    ui <- fluidPage(
    titlePanel("Corona Testungszahlen"),
    sidebarLayout(
        sidebarPanel( h5("Hier koennen sie die Wochenspanne auswaehlen:"),
                      sliderInput("Wocheninput", "Kalenderwoche",11, 75, c(25, 40)),
                      uiOutput("slider"),
                      
                      checkboxGroupInput("plots", "Waehlen sie ihre Daten:", 
                                         choices=list("Anzahl_Testungen","Positiv_Getestet","Positivanteil_Prozent"), 
                                         selected="Anzahl_Testungen")),
        mainPanel(
            plotOutput("PLOT")
        )
    )
)


 server <- function(input, output) {
     output$PLOT <- renderPlot({
         filtered <-
             Daten %>%
             filter(Woche >= input$Wocheninput[1],
                    Woche <= input$Wocheninput[2]
             )
         ggplot(filtered, aes(Woche, .data[[input$plots]])) +
             geom_line(color="blue", size=1.2)
     })
 }
 

【问题讨论】:

    标签: r plot shiny


    【解决方案1】:

    获取长格式数据并过滤您要绘制的列。在ggplot代码中指定列名为color

    library(tidyverse)
    library(shiny)
    
    cols <- c("Anzahl_Testungen","Positiv_Getestet","Positivanteil_Prozent") 
    
    ui <- fluidPage(
      titlePanel("Corona Testungszahlen"),
      sidebarLayout(
        sidebarPanel( h5("Hier koennen sie die Wochenspanne auswaehlen:"),
                      sliderInput("Wocheninput", "Kalenderwoche",11, 75, c(25, 40)),
                      uiOutput("slider"),
                      
                      checkboxGroupInput("plots", "Waehlen sie ihre Daten:", 
                                         choices=cols,
                                         selected="Anzahl_Testungen")),
        mainPanel(
          plotOutput("PLOT")
        )
      )
    )
    
    server <- function(input, output) {
      output$PLOT <- renderPlot({
        filtered <-
          Daten %>%
          filter(Woche >= input$Wocheninput[1],
                 Woche <= input$Wocheninput[2]
          ) %>%
          select(Woche, cols) %>%
          pivot_longer(cols = -Woche) %>%
          filter(name %in% input$plots)
        
        ggplot(filtered, aes(Woche, value, color = name)) +
          geom_line(size=1.2)
      })
    }
    
    shinyApp(ui, server)
    

    【讨论】:

    • 嘿! :-) 提前致谢!代码有效!但我实际上想要一个图表中的数据:-D 现在我得到了 3 个并排的图表:-/
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 2018-08-09
    相关资源
    最近更新 更多