Результаты для ggplot in r shiny

59
12

Почему вывод вывода для ggplot не отображается на выходе? В чем проблема со следующим кодом? Он не производит никаких ошибок, но он показывает график ggplot в ui. В r блестящий поток данных очень сложный, так как я новичок

enter image description here

ui.R

library(shiny)
library(DT)
library(ggplot2)
shinyUI(fluidPage(
titlePanel("Stock prediction"),
sidebarLayout(
sidebarPanel(
textInput(inputId = "stock_name",label = "Enter the stock name",value = "MSFT"),
textInput(inputId = "stock_history",label = "How many days back would you like your data to go back to help make the prediction?",value = "compact")
),
mainPanel(
h2("Stock data"),
DT::dataTableOutput("data_table"),
renderPlot("plot_high")
)
)
))

server.R

library(DT)
library(shiny)
library(alphavantager)
library(ggplot2)
data <- function(stock_name="",days_history){
av_api_key("YOUR_API_KEY")
sri <- data.frame(av_get(symbol = stock_name, av_fun = "TIME_SERIES_DAILY", interval = "15min", outputsize = "compact"))
sri
}
visualization <- function(sri){
high_vis <- ggplot(aes(x = timestamp, y = high),data = sri) + geom_freqpoly(stat = "identity") +
labs(title = "High price vs Time",x = "Timeline in months",y = "Share price - High") +
theme_classic(base_size = 20)
high_vis
}
shinyServer(function(input, output) {
output$data_table <- renderDataTable({data(input$stock_name,input$stock_history)})
output$plot_high <- renderPlot({visualization(data_table)})
})

спросил(а) 2018-04-07T09:46:00+03:00 2 года, 6 месяцев назад
1
Решение
70

Это должно сработать.

замещать

    renderPlot("plot_high") по plotOutput("plot_high") в ui.R visualization(data_table) посредством visualization(data(stock_name=input$stock_name, input$stock_history)) в server.R

Вы также можете удалить DT:: в DT::dataTableOutput("data_table"). По какой-то причине функция dataTableOutput из пакета DT не работает для меня (поэтому я использовал ту же функцию, но прямо из shiny).

РЕДАКТИРОВАТЬ

Возможно, вам будет shinyServer переписать shinyServer как:

shinyServer(function(input, output) {
data_table <- reactive({data(stock_name=input$stock_name, input$stock_history)})
output$data_table <- renderDataTable({data_table()})
output$plot_high <- renderPlot({visualization(data_table())})
})

Обратите внимание, что input$stock_history (days_history) не используется (и может быть удален) в предоставленном коде для функции data().

ответил(а) 2018-04-07T10:41:00+03:00 2 года, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема