使用R输入划分ggplot轴的列

使用R输入划分ggplot轴的列,r,ggplot2,shiny,R,Ggplot2,Shiny,我有下面的代码,基本上希望获取两个输入,并返回一个图的输出批次,其中时间在x轴上,y轴是input1/input2的比率。我尝试了aes和aes_字符串,但似乎无法在闪亮的应用程序中获得显示比率的工作块。根据年份绘制输入1没有问题 ui <- navbarPage("y", tabPanel('Teacher Type Comparison', sidebarLayout( sidebarPanel( select

我有下面的代码,基本上希望获取两个输入,并返回一个图的输出批次,其中时间在x轴上,y轴是input1/input2的比率。我尝试了aes和aes_字符串,但似乎无法在闪亮的应用程序中获得显示比率的工作块。根据年份绘制输入1没有问题

ui <- navbarPage("y",
  tabPanel('Teacher Type Comparison',
        sidebarLayout(
            sidebarPanel(
                selectInput('teacherInputOne', 'Compare ratio of',
                           choices = teacher_inputs, selected = 'male_total_staff'),
                selectInput('teacherInputTwo', 'to ratio of:',
                           choices = teacher_inputs,  selected = 'female_total_staff'),
                checkboxGroupInput('teacherState','States / Territories',area_names)
            ),

            mainPanel(
            plotOutput('teacherTypePlot'))
        )
    )


  )
server <- function(input, output) {

    output$teacherTypePlot <- renderPlot({
        ggplot(data = data, aes(x= year, y = (input$teacherInputOne / input$teacherInputTwo))) + geom_line(aes(colour = state))
    })}

shinyApp(ui = ui, server = server)

根据提供的代码,我不确定我是否完全理解您的所有变量,但我会更改服务器,根据UI中的输入选择过滤您的数据,将过滤后的值传递给您的Y aes。我只建议更改服务器中的代码:

    server <- function(input, output) {

      output$teacherTypePlot <- renderPlot({


        data <- data %>% 
          filter(var1 == input$teacherInputOne, 
                 var2 == input$teacherInputTwo)

        ggplot(data = data, aes(x= year, y = var3)) + 
          geom_line(aes(colour = state))
      })}

我希望输入是两个独立的列名,这两列的比率是绘图的y轴。