Как добавить шкалу времени в блестящее приложение, чтобы показать прогресс анимированного ggplot за эти годы? - PullRequest
0 голосов
/ 22 марта 2019

Итак, я просто смог выяснить, как создать анимированный график, используя ggplot и gganimate в блестящем. Однако мои усилия по добавлению шкалы времени внизу графика до сих пор были бесплодными. Вот мой блестящий код и данные:

library(ggplot2)
library(gganimate)
library(tidyverse)
library(shiny)

ui <- basicPage(
    imageOutput("myImage")

)

server <- function(input, output, session) {
  output$myImage <- renderImage({

    Data <- tribble(
  ~LinkIDs, ~Year2001Traffic, ~Year2002Traffic, ~Year2003Traffic,
  "A", 1, 10, 15,
  "B", 3, 1, 10,
  "C", 10, 5, 1)

    Data <- Data %>% gather(Year, Traffic, -LinkIDs)
    Data <- Data %>% mutate(Year= as.integer(parse_number(Year)))

    outfile <- tempfile(fileext='.gif')


    p1 <- ggplot(Data, aes(x = LinkIDs, y = Traffic)) +
      geom_bar(stat = "identity", color = 'blue', fill="white") +
      labs(title = 'Year: {frame_time}', x = 'Link ID', y = 'Volume') + 
      transition_time(Year)

    anim_save("outfile.gif", animate(p1, fps = 1, duration = 3))

    list(src = "outfile.gif",
         contentType = 'image/gif'
    )}, deleteFile = TRUE)
}

shinyApp(ui, server)

Итак, я хочу иметь временную шкалу, аналогичную той, которая расположена под графиком гэминдера в нижней части этой страницы, чтобы можно было воспроизвести / запустить / остановить анимацию:

https://towardsdatascience.com/animating-your-data-visualizations-like-a-boss-using-r-f94ae20843e3

Может кто-нибудь помочь мне с этим? любая помощь приветствуется.

1 Ответ

0 голосов
/ 24 марта 2019

Я не нашел пример анимированной линейки с моим первым поиском.С точками это работает:

library(ggplot2)
library(plotly)
library(tidyverse)
library(shiny)

ui <- basicPage(
  plotlyOutput("myImage")

)

server <- function(input, output, session) {
  output$myImage <- renderPlotly({

    Data <- tribble(
      ~LinkIDs, ~Year2001Traffic, ~Year2002Traffic, ~Year2003Traffic,
      "A", 1, 10, 15,
      "B", 3, 1, 10,
      "C", 10, 5, 1)

    Data <- Data %>% gather(Year, Traffic, -LinkIDs)
    Data <- Data %>% mutate(Year= as.integer(parse_number(Year)))

    p1 <- ggplot(Data, aes(x = LinkIDs, y = Traffic)) +
      geom_point(aes(frame = Year),stat = "identity", color = 'blue', fill="white")# +
      #labs(title = 'Year: {frame_time}', x = 'Link ID', y = 'Volume')

    ggplotly(p1)

  })
}

shinyApp(ui, server)
...