R 闪亮的仪表板由于某种原因不显示图表。不允许我在一个 ggplot 渲染中添加 2 个反应式表达式

Posted

技术标签:

【中文标题】R 闪亮的仪表板由于某种原因不显示图表。不允许我在一个 ggplot 渲染中添加 2 个反应式表达式【英文标题】:R shiny dashboard not displaying graph for some reason. Will not let me add 2 reactive expressions to one ggplot render 【发布时间】:2019-11-15 09:39:12 【问题描述】:

我正在尝试获得一个闪亮的仪表板,尽管我的图表不起作用。

我有一个 data.frame,其中包含一个日期格式的 Date 列和 4 个数字列类型,它们是 ISA, NonISA, FixedRateInterest and VariableRateInterest 并且用 0 填充了 N/A 值。

我有一个带有日期范围滑块的复选框,我可以渲染图表,但是当我尝试添加 DateRangeslider 时它不起作用并引发以下错误:

Unknown input:data.frame

这是我创建仪表板的代码。谁能帮我理解为什么它不起作用?我知道这与 ggplot 线有关,但不确定是什么。

谢谢

isa <- read.csv("isa.csv")
isa$Date <- paste0(isa$Date, "01")
isa$Date <- as.character(isa$Date)
isa$Date <- as.Date(isa$Date, format = "%Y%m%d")
date <- isa$Date


# Define UI ----
ui <- fluidPage(
  titlePanel("Customer"),
  sidebarLayout(
  sidebarPanel(
    br(),
    br(),
    br(),
    br(),
br(),
br(),
br(),
br(),
br(),
br(),
br(),
br(),
br(),
br(),
br(),
br(),
br(),
img(src = "Logo.jpg", height = 100, width = 150)),
  fluidRow(
      h1("Choose Dataset"),
    br(),
  br(),
  column(1,
         checkboxGroupInput(inputId = "product",
                     h3("Product"),
                     choices = c('ISA',
                                    "Non-ISA",
                                    "Fixed",
                                    "Variable"),
                     selected = 1)),
  br(),
  br(),
  br(),
  br(),
  br(),
  br(),
  br(),
  br(),
  br(),
  br(),
  br(),

  column(2,
         dateRangeInput(inputId = "dates", h3("Date Range"),
                        start = min(isa$Date),
                        end =  max(isa$Date),
                        min = min(isa$Date),
                        max = max(isa$Date),
                        separator = "-", format = "yyyy/mm/dd")

  ))),
  br(),
  br(),
  br(),



mainPanel(
  plotOutput("barplot")
   )
 )
)
# Define server logic ----
server <- function(input, output) 




  dataInput <- reactive(

switch(input$product,
       "ISA" = ISA,
       "Non-ISA" = isa$NonISA,
       "Fixed" = isa$FixedRateInterest,
       "Variable" = isa$VariableRateInterest)

似乎是在这里失败了

      )
 dateInputx <- reactive(
    isa[isa$Date >= input$dates[1] &  isa$Date <= input$dates[2],]
   )


  output$barplot <- renderPlot(

并且无法识别 ggplot 上的 x 轴

ggplot(data = dataInput(), aes_string(x= dateInputx(), y = dataInput())) +
         geom_line(stat ="identity")
  )




# Run the app ----
shinyApp(ui = ui, server = server)

【问题讨论】:

server 部分的开头,您输入date &lt;- isa$Date,然后以as.Date 格式输入isa$Date。但是在aes 中,你使用date,所以也许你应该改用Date(我希望很清楚) 这是为了使 x 轴只是日期的选择。当我尝试你的方式时,我得到了这个error: object 'Date' not found date &lt;- isa$Date之后,str( date )是什么,是字符吗? 【参考方案1】:

ggplot 中的 data 参数应该是数据框而不是列。然后,将aes_string() 与相应的列名一起使用。我试图在下面制作一个可重现的示例:

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

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      selectInput('ycol','Y axis',choices = c('City Mileage','Highway Mileage')) # 
    ),
    mainPanel(
      plotOutput('plot')
    )
  )
)

server <- function(input,output)
  data(mpg)  # Replace mpg with your dataframe of choice(isa in your case)

  dataInput <- reactive(  # Required y column name as in dataframe
    switch(input$ycol,
           "City Mileage" = 'cty',
           "Highway Mileage" = 'hwy')

  )


  output$plot <- renderPlot(
                         # Use aes_string for column names stored in strings
    p <- ggplot(data=mpg,aes_string(x='displ',y=dataInput()))+
      geom_line()

    p
  )


shinyApp(ui,server)

【讨论】:

aes_string() 已弃用,请改用.data 代词:aes(x=.data$displ,y=.data[[dataInput()]]) @geds133 你的data 争论应该是isa 而不是dataInput()

以上是关于R 闪亮的仪表板由于某种原因不显示图表。不允许我在一个 ggplot 渲染中添加 2 个反应式表达式的主要内容,如果未能解决你的问题,请参考以下文章

基于选定的单选按钮选项,在闪亮的R中单击提交按钮后如何显示图表和数据?

在图表中选择活动跟踪并在 R 闪亮的数据表中显示

如何让 Leaflet for R 使用 100% 的闪亮仪表板高度

当我在 Shiny 应用程序中添加新的 fluidRow 时,R 闪亮的仪表图消失了?

图表不随下拉列表更新(Dash Plotly)

R Highcharter:工具提示自定义