R Shiny: связывание нескольких графиков с помощью кисти - PullRequest
1 голос
/ 13 июля 2020

У меня есть набор данных о бронировании отелей, который состоит из «book_date», «check_in», «check_out» и «доход». Я хотел бы нарисовать 2 диаграммы - «доход по дате бронирования» против «доход по дате заезда»; который я мог бы выделить / увеличить в конкретном периоде бронирования (говорит, январь 2018 г.), чтобы понять доход за соответствующий период регистрации (например, февраль - апрель 2018 г.).

Я пытаюсь достичь этого, включив Shiny "bru sh "в R Flexdashboard. Идея состоит в том, что, когда в «доходе на дату бронирования» ничего не указано «bru sh», «доход на дату регистрации» будет отображать диаграмму по умолчанию (т.е. доход для всех дат регистрации). Если пользователь увеличивает период «выручка по дате бронирования», «выручка по дате заезда» отреагирует соответствующим образом. Однако отображение по умолчанию для «выручки на дату регистрации» не работает должным образом.

Ниже приведены мои коды:

library(flexdashboard) 
library(shiny)
library(tidyverse)
library(lubridate)
library(timetk)
library(scales)
library(plotly)
  1. доход на дату бронирования

shiny::plotOutput(outputId = "revenue_book", brush = brushOpts(id = "brush", direction = "x"))

output$revenue_book <- shiny::renderPlot(
    df %>% filter(book_year == 2018) %>% 
      group_by(book_date) %>%
      summarise(revenue = sum(price)) %>%
      ungroup() %>% 
      ggplot(aes(book_date, revenue)) + geom_line() + geom_point(color = "red") + theme_bw()
  )

доход к дате заезда

shiny::plotOutput(outputId = "revenue_ci")

output$revenue_ci <- shiny::renderPlot({ if (is.null(input$brush)) { p <- df %>% filter(book_date == 2018) %>% group_by(check_in) %>% summarise(revenue = sum(price)) %>% ungroup()

 # default chart if no "brushing" on "booking revenue chart"
` p %>% ggplot(aes(check_in, revenue)) + geom_line() +`        `geom_point(color = "blue") + theme_bw()}`

else { q <- df %>% filter(book_date >= input$brush$xmin & book_date <= input$brush$xmax) %>% group_by(check_in) %>% summarise(revenue = sum(price)) %>% ungroup()

 `q %>% ggplot(aes(check_in, revenue)) + geom_line() +` `geom_point(color = "blue") + theme_bw()}})`

Таблицы без чистки

enter image description here

Charts with Brushing

введите описание изображения здесь

Оцените ваш совет по поводу того, что пошло не так, поскольку я новичок в R Shiny и Flexdashboard.

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