График Ploly в приложении Shiny представляет собой плоскую линию вместо рабочего графика разброса

Я работаю с shiny, чтобы создать раскрывающееся окно, в котором вы можете выбрать элемент. Когда этот элемент выбран, отображается график. Когда я запускаю график plotly, я получаю красивый график рассеяния, но когда я запускаю его в блестящем приложении, я получаю прямую линию на каждом из трех элементов.

Это программный код, который работает сам по себе:

library(plotly)
plot_ly(df1, x = ~time, y = ~item1, color = ~item1) 
%>% add_lines(name = ~"item1")

Вот как выглядит набор данных с 4 столбцами и 26949 строками:

      time                      item1    item2    item3
1     2018-04-09 00:00:06        615       NA       NA
2     2018-04-09 00:00:08         NA      465       NA
3     2018-04-09 00:00:08         NA       NA       NA
4     2018-04-09 00:00:10         NA       NA      422
5     2018-04-09 00:00:13         NA       NA       NA
6     2018-04-09 00:00:21        522       NA      385
7     2018-04-09 00:00:25         NA       NA       NA
....  ....                       ....     ....     ...
26949 2018-04-09 23:59:59        323       NA      200

Блестящий код выглядит следующим образом:

#Import libraries
library(shiny)
library(plotly)

# Define UI for the application
ui <- bootstrapPage(

selectInput(inputId = "n_breaks",
            label = "Select Item:",
            choices = c("item1", "item2", "item3"),
            selected = "item1"),

plotlyOutput(outputId = "main_plot", height = "300px")

)

# Define server logic
server <- function(input, output) {

#Import data
df = read.csv("item_list.csv")

output$main_plot <- renderPlotly({

#Plotly graph
plot_ly(df, x = ~time, y = ~input$n_breaks, color = ~input$n_breaks) %>%
  add_lines(name = ~input$n_breaks)
})
}

# Run the application 
shinyApp(ui = ui, server = server)

По большей части этот код работает, но график испорчен. Любая помощь будет принята с благодарностью!


person sectechguy    schedule 11.04.2018    source источник


Ответы (1)


Вы должны написать функцию plot_ly как:

plot_ly(df, x = ~time, 
        y = df[, input$n_breaks], 
        color = df[, input$n_breaks]) %>%
        add_lines(name = ~input$n_breaks)

Или немного короче:

plot_ly(x = df[, "time"], 
        y = df[, input$n_breaks], 
        color = df[, input$n_breaks]) %>%
        add_lines(name = ~input$n_breaks)
person DJack    schedule 11.04.2018
comment
Работал как шарм @DJack. Спасибо! - person sectechguy; 11.04.2018
comment
Пожалуйста. Если вы считаете, что проблема решена, подумайте о том, чтобы принять ответ, чтобы закрыть вопрос (stackoverflow.com/help/someone-answers). - person DJack; 11.04.2018
comment
Просто принял это. Все еще в новинку, спасибо, что напомнили мне! - person sectechguy; 11.04.2018