【问题标题】:Assigning df vector to variable within shiny renderPlot将df向量分配给闪亮的renderPlot中的变量
【发布时间】:2021-03-29 15:46:45
【问题描述】:

我正在创建一个闪亮的应用程序,它在我的 df 中创建一个包含两个变量的图。用户可以选择 X 和 Y,然后是一个复选框选项用于记录 X 和一个用于记录 Y。我有一个工作代码,但我正在尝试简化它。为此,我想将用户的 X 变量分配给“独立”,将用户的 Y 变量分配给“依赖”,然后创建一个 if 语句来说明独立和依赖被记录,这样我就可以继续我的情节代码只是指变量独立和依赖。这是我必须说明我的意思的代码,但情节没有出现在我的应用程序中。我假设我错误地使用了 reactive():

 output$Plot <- renderPlot({
   
  reactive({
    
    if (input$xLog) { # check box for log(X)
      
    Independent <-  log(df[[input$Var1]])
    
    } else if (!input$xLog) {
      
    Independent <- df[[input$Var1]]
    
  }

     if (input$yLog) { # check box for log(Y)
       
       Dependent <-  log(df[[input$Var2]])
       
     } else if (!input$yLog) {
       
       Dependent <- df[[input$Var2]]
     }
     
plot <- ggplot(data = df, mapping = aes(x = Independent, y = Dependent))

   }) end reactive()

plot <- plot + geom_point()

plot

}) # end renderPlot

感谢您的宝贵时间!

【问题讨论】:

  • 在你的ggplot 命令中,独立和从属应该是df 的列名,这样才能正常工作。所以要么重命名它们,生成一个转换后的新df,或者做类似ggplot() + geom_point(aes(x=Independent, y=Dependent))

标签: r shiny


【解决方案1】:

您的代码有两个问题:

  • 您不需要在 renderPlot 中添加 reactive,因为这已经是响应式的了
  • ggplot 生成一个data.frame,其中包含您在aes 中引用的变量
output$Plot <- renderPlot({
  
  if (input$xLog) { # check box for log(X)
    
    Independent <-  log(df[[input$Var1]])
    
  } else {
    
    Independent <- df[[input$Var1]]
    
  }
  
  if (input$yLog) { # check box for log(Y)
    
    Dependent <-  log(df[[input$Var2]])
    
  } else {
    
    Dependent <- df[[input$Var2]]
  }
  
  plot_data <- data.frame(
    Independent = Independent,
    Dependent = Dependent
  )
  
  plot <- ggplot(plot_data = df,
                 mapping = aes(x = Independent, y = Dependent)) +
    geom_point()
  
  plot
  
}) # end renderPlot

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-28
    相关资源
    最近更新 更多