将 ggplot 与 r-shiny 一起使用时出错

Posted

技术标签:

【中文标题】将 ggplot 与 r-shiny 一起使用时出错【英文标题】:Getting error while using ggplot with r-shiny 【发布时间】:2021-04-16 10:20:49 【问题描述】:

我正在尝试开发我的第一个 R 闪亮应用。我正在尝试让用户可以决定他想看哪一年。

我运行的错误是:

Warning: Error in : Problem with `filter()` input `..1`.
x Input `..1` must be of size 1026 or 1, not size 0.
i Input `..1` is `leto == input$leto`.
  184: <Anonymous>

我的服务器代码是:

library(shiny)
library(ggplot2)

function(input, output) 
  
  output$graf_dejavnosti <- renderPlot(
    graf_dejavnosti <- ggplot(gospodarskadejavnost %>% 
                                filter(leto == input$leto)) + 
      aes(x=oznaka, y=placa, fill=spol) +
      geom_col(position = "dodge") + guides(fill=guide_legend("Leto")) +
      labs(title = "Plače po dejavnosti in spolu") + theme(plot.title = element_text(hjust = 0.5)) +
      ylab("Plača") + xlab("Dejavnosti") + coord_flip()
    print(graf_dejavnosti)
  )
  output$legenda <- renderTable(gospodarskadejavnost %>%
                                  select(oznaka, dejavnost) %>% unique())

我的用户界面代码是:

library(shiny)

fluidPage(
  titlePanel(""),
  
  tabPanel("Graf",
           sidebarPanel(
             selectInput("Leto", label = "Izberi leto", 
                         choices = unique(gospodarskadejavnost$leto))),
           mainPanel(plotOutput("graf_dejavnosti"),
                     tableOutput("legenda")))
  
)

感谢您的帮助!

【问题讨论】:

【参考方案1】:

我认为这是因为您将 UI 元素称为“Leto”,所以您的服务器代码应该是:

filter(leto == input$Leto))

假设您的其余代码是正确的,并且 leto 是您数据框中列的正确名称。

【讨论】:

以上是关于将 ggplot 与 r-shiny 一起使用时出错的主要内容,如果未能解决你的问题,请参考以下文章

使用ggplot将文本制作为新罗马字体时出现问题

将多个ggplot动画组合在一起?

使用 ggmap 和 ggplotly

将 Jackson JSON 库与骆驼一起使用时出现异常

将 AutoMapper 与实体框架一起使用时出现异常

将插入与 KeyHolder 一起使用时出现 ArrayIndexOutOfBoundsException