Полностью реактивный формат даты по оси x

Я работаю с ggplot2 а также plotly, Я хочу, чтобы моя ось х реагировала на отображаемый диапазон дат. Так что, если пользователь смотрит на 1990 - 2015, я бы хотел, чтобы ось х отображала годы.

Теперь, когда пользователь чистит зубы и график настраивается, чтобы показать пользователю, скажем, 1990 - 1991, я хочу, чтобы ось х отображала месяцы.

Мне нужна помощь в настройке реактивности. Есть идеи?

1 ответ

Использование scale_x_date от ggplot

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

ui <- fluidPage(
  dateRangeInput("SDates", label = ("Select range"), 
                 start="2006-01-01",
                 min=min(economics$date),max=max(economics$date), 
                 format="dd.mm.yyyy",
                 end = "2007-01-01"),
  plolytOutput("plot")

)

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

  df<-reactive({
    economics[economics$date<input$SDates[2]&economics$date>input$SDates[1]]
  })
  output$plot <- renderPlotly({
    brakes<-ifelse(as.numeric(difftime(input$SDates[2],input$SDates[1], units="days"))>365,"1 year","1 month")
    ldates<-ifelse(as.numeric(difftime(input$SDates[2],input$SDates[1], units="days"))>365,"%Y","%m-%y")

    p<-ggplot(df(), aes(x=date, y=unemploy))+geom_line()+
      scale_x_date(date_breaks = brakes, labels = date_format(ldates))
    ggplotly(p)
  })




}


shinyApp(ui, server)
Другие вопросы по тегам