【问题标题】:Shiny reactive plot multiple conditions in same dataset闪亮的反应在同一数据集中绘制多个条件
【发布时间】:2016-12-11 00:39:23
【问题描述】:

我在使用 server.R 时遇到问题,它会根据 ui.R 中的下拉选择来绘制数据。我想选择一个“站点”和一个“参数”并绘制反映该“站点”和“参数”的“Obs”。 Obs 作为 X 上的 Y 和 Date。这是一些示例代码。

Site_Names=data.frame(c(A=rep("A",10),B=rep("B",10),C=rep("C",10)))
Site_Names=Site_Names[,1]
Parameters=data.frame(c(pH=rep("pH",10),DO=rep("DO",10),Temp=rep("Temp",10)))
Parameters=Parameters[,1]
Obs=rnorm(30)
Dates=c(seq(as.Date("2000/1/1"), by = "year", length.out =10 ),
seq(as.Date("2005/1/1"), by = "year", length.out =10 ),
seq(as.Date("1990/1/1"), by = "year", length.out =10 ))

data=data.frame(Site_Names,Parameters,Obs,Dates)

#ui.R

Sites=levels(data$Site_Name)
setNames(as.list(Sites), Sites)
params=levels(data$Parameters)
setNames(as.list(params), params)

library(shiny)
library(ggplot2)

shinyUI(fluidPage(

 # Application title
  titlePanel("Data"),

  sidebarLayout(
   sidebarPanel(
    selectInput("site", "Select Site:", Sites),
      selectInput("parameters", "parameter", params)

    ),

# Show a plot of the generated distribution
mainPanel(
  plotOutput("Plot")
  )
 )
  ))

#server.R

library(shiny)
library(ggplot2)
shinyServer(function(input, output) {

  dataset <- reactive({
    data[ , (input$Sites),]
  })

  output$distPlot <- renderPlot({

      p <- ggplot(dataset(), aes(x=Dates, y=input$params and input$Sites))
      + geom_point(data$Obs)
      print(p)

      })

【问题讨论】:

  • 你能提供一个你想要的情节是什么样子的想法吗?
  • 只是一个基本的散点图或线图,x 轴为日期,y 轴为“Obs”数据。理想情况下,日期也会根据所选的站点和参数而改变

标签: r ggplot2 shiny


【解决方案1】:

您可以在反应式表达式中使用subset 来获取绘图数据。不过要小心,因为如果站点数据中不包含该参数,您最终可能会得到空值。

library(shiny)
library(ggplot2)
shinyServer(function(input, output) {

  dataset <- reactive({
    subset(data, Site_Names == input$Sites & Parameters == input$params)
  })

  output$distPlot <- renderPlot({

      p <- ggplot(dataset(), aes(x = Dates, y = Obs)) + 
           geom_line()

      print(p)

      })

【讨论】:

  • 这真的很接近,但仍有一些问题。没有任何 Obs 数据显示在绘图上……无论选择哪个站点或参数,它都是完全空白的。感谢您帮助我。
  • 非常感谢 Jake。这非常有帮助。我让你的代码工作了。
猜你喜欢
  • 2019-06-15
  • 2017-02-23
  • 2023-04-01
  • 2018-05-26
  • 1970-01-01
  • 2015-03-09
  • 2017-04-09
  • 2021-02-16
相关资源
最近更新 更多