Как мне построить простой дисплей временного ряда в блестящем - PullRequest
0 голосов
/ 08 октября 2019

Я новичок в Shiny и пытаюсь создать небольшое приложение для построения 3-х временных рядов, где X - день года, Y - цена, а 3 строки - 2018 и 2019 гг., А третья - цена. прогнозируемая цена модели.

Фрейм данных, с которым я работаю, выглядит примерно так:

City        Day_of_year avg_price price type
Rome        1           400       sold_2018
Rome        2           405       sold_2018
Milan       1           300       sold_2018
Milan       2           305       sold_2018
Rome        1           200       sold_2019
Rome        2           200       sold_2019
Milan       1           205       sold_2019
Milan       2           205       sold_2019
Rome        1           200       prediction_2020
Rome        2           200       prediction_2020
Milan       1           205       prediction_2020
Milan       2           205       prediction_2020


Я бы хотел, чтобы в пользовательском интерфейсе был выбран ввод на основе города в качестве единственного реактивного элемента. ,т.е. Рим покажет 3 строки для Рима, Милан для Милана и т.д ..

1 Ответ

1 голос
/ 08 октября 2019

@ praguetastic Всегда хорошая идея поделиться воспроизводимым примером ваших данных. функция dput от базы R идеально подходит для этого. В случае, если ваши данные большие, просто попробуйте создать пример данных, которые сохранят импортированные элементы вашего вопроса, как показано ниже.

data

Важно, чтобыВы даете людям знать, как хранятся ваши данные, так как таким образом мы можем использовать правильный подход, чтобы помочь вам. Например, в этом случае я не знаю, есть ли у вас объект временных рядов или подобный фрейм данных.

data <- data.frame(
  country = rep(c("Dom. Rep", "USA", "China"), each = 50),
  price = rnorm(150, mean = 1, sd = 6),
  date = rep(seq(as.Date("2018-01-01"), by = "day", length.out = 50), times = 3)
) 

app

Если вы запустите этот скрипт,у вас будет простое приложение, чтобы начать делать то, что вы хотите.

library(shiny)
library(ggplot2)
library(dplyr)

ui <- fluidPage(

  #Header
  h1("Time series plot"),

  selectInput(
    inputId = "country",
    label = "Select country",
    choices = unique(data$country),
    selected = "Dom. Rep"
  ),

  plotOutput("plot")
)


server <- function(input, output, session) {

  output$plot <- renderPlot({
    data %>%
      filter(country == input$country) %>%
      ggplot(aes(date, price)) +
      geom_line()
  })

}

shinyApp(ui, server)

В будущем не забывайте улучшать свои вопросы. Эта статья может быть полезна для этого

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...