2017-01-15 2 views
0

Я использую Rstudio и Shiny для проекта.Изменение значения оси графика динамически из dataframe в Shiny

Я определил переменную res и содержит данные с несколькими строками и столбцами, затем создаю график, а его x y и цвет - данные из res dataframe. Моя проблема в том, что когда я запустил его, если я напишу, что хочу, чтобы оси x были введены значения переменных (input$SelInp), я не получаю значения dataframe, вместо этого получаю только имя столбца.

Если я изменю код, чтобы получить значения непосредственно из dataframe (res$some_column_name), я получаю правильные значения.

ui.R

selectInput("SelInp", 
         label = "Choose one:", 
         choices = colnames(res) 
         ) 

server.R

output$plt = renderPlot({ 
        qplot(data = res, 
        x = input$SelInp, #this only returns a column name 
        y = res$loan_amnt, # this returns correct values from column loan_amt 
        ylab = "some y axis", 
        xlab = "some x axis", 
        main="Our Chart") 
        } 
        ) 

так, я хочу, чтобы получить значения в input$SelInp заранее спасибо

ответ

3

Я думаю, что причина в том, что selectInput является возвращая имя столбца в качестве символа. qplot ожидает переменную. Я не проверял, если qplot имеет возможность использовать символы для определения весов, но aes_string в ggplot делает это:

ui.R

library(shiny) 
    library(ggplot2) 

    shinyUI(fluidPage(


     titlePanel("Old Faithful Geyser Data"), 


     sidebarLayout(
     sidebarPanel(
      selectInput("selectedCol", "Select colum for X axis", choices = colnames(mtcars), selected = colnames(mtcars)[1]) 
     ), 


     mainPanel(
      plotOutput("distPlot") 
     ) 
    ) 
    )) 

server.R

library(shiny) 
    library(ggplot2) 

    shinyServer(function(input, output) { 

     output$distPlot <- renderPlot({ 
      x_axis <- input$selectedCol 
      gg <- ggplot(mtcars, aes_string(x = x_axis, y = "hp", color = "cyl")) 
      gg <- gg + geom_point() 
      gg 

     }) 


    }) 

Позвольте мне знать, если это поможет.

+0

Спасибо @Valter, мне удалось воссоздать сюжет успешно, используя ваш предоставленный пример ggplot, и он меняет динамически, как я и хотел, но я все еще не могу понять, как это сделать, используя qplot, так как мой пример: –

+0

Рад, что это помогло. Я уверен, что есть решение с qplot. Я посмотрю на это в течение недели и дам вам знать. –

Смежные вопросы