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