闪亮的ggplot:动态y轴标题(多列)

时间:2016-04-28 09:31:01

标签: r ggplot2 shiny

我正在尝试将y轴标题调整为ggplot。我选择了selectizeInput小部件,因此用户可以选择多个列进行绘图。我希望y轴的标题能够动态地改变并显示选择的列名。

使用这个简单的代码:

library(shiny)
library(DT)
library(ggplot2)
library(reshape2)

x <- as.numeric(1:1000000)
y <- as.numeric(1:1000000)
z <- as.numeric(1:1000000)
data <- data.frame(x,y, z)

shinyApp(
  ui = fluidPage(selectizeInput(inputId = "yaxis", 
                             label = "Y-axis",
                             choices = list("x","y","z"), 
                             selected = c("x"), multiple=TRUE),
                 dataTableOutput('tableId'),
                 plotOutput('plot1')),
  server = function(input, output) {    
    output$tableId = renderDataTable({
      datatable(data, options = list(pageLength = 10, lengthMenu=c(10,20,30)))
    })
    output$plot1 = renderPlot({

      filtered_data <- data[input$tableId_rows_all,]

      widedata <- subset(filtered_data, select=c("x", input$yaxis))

      longdata <- melt(widedata, id.vars="x", variable.name="Variables", value.name="Value_y")

      ggplot(data=longdata, aes_string(x="x",y="Value_y",group="Variables")) + geom_line() +ylab(paste(input$yaxis))   
    })
  }
)  

它只显示第一个选择......

如果我改为:

+ylab(paste(input$yaxis[1],input$yaxis[2]))

它只显示两个选项,但如果只选择了一个选项,那么在轴标题上我们将看到 NA 代替第二个选项..

我希望它是动态的,因此用户可以选择一个或多个选项,yaxis的标题将会调整..

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

如果你只需要它,那就是dunamicaly改变ylab

尝试+ylab(paste(input$yaxis,collapse = " ") )