我正在尝试修改我的闪亮代码,以便我的情节可以缩放。
问题是,我的x轴使用as.POSIXct
个日期作为限制。
例如,当前应用的工作版本是:
library(shiny)
ui <- fluidPage(selectInput(inputId = "data",label="Make a choice", choices=c("A","B")),
plotOutput("plot1"),dateInput(inputId = "lowerlimit", label="Lower Date",value="2016-01-01"), dateInput(inputId = "upperlimit",label="Upper Date"))
server <- function(input,output){
output$plot1 <- renderPlot({
dates=seq(as.POSIXct("2016-01-01 00:00:00",tz="UTC"), as.POSIXct("2016-06-01 23:45:00",tz="UTC"),by="15 min")
values=rnorm(14688)
data=data.frame(Date=dates,Data=values)
ggplot(data, aes(Date, Data))+geom_line()+
scale_x_datetime(limits=c(as.POSIXct(input$lowerlimit), as.POSIXct(input$upperlimit)), labels = date_format("%d-%m-%y"))+ylab("")+
ggtitle("My Plot")+xlab("")
})
}
shinyApp(ui=ui, server=server)
但是,我想让plot1
缩放。我一直试图遵循这个example,但由于我的x轴使用日期,它似乎不起作用。
我试过了:
library(shiny)
ui <- fluidPage(selectInput(inputId = "data",label="Make a choice", choices=c("A","B")),
plotOutput("plot1",dblclick = "plot1_dblclick", brush = brushOpts(id="plot1_brush",resetOnNew = T)),
dateInput(inputId = "lowerlimit", label="Lower Date",value="2016-01-01"),
dateInput(inputId = "upperlimit",label="Upper Date"))
server <- function(input,output){
ranges <- reactiveValues(x = NULL, y = NULL)
output$plot1 <- renderPlot({
if (!is.null(ranges$x)) {
ranges$x <- as.POSIXct(ranges$x, format = "%d-%m-%y",tz="UTC")
}
dates=seq(as.POSIXct("2016-01-01 00:00:00",tz="UTC"), as.POSIXct("2016-06-01 23:45:00",tz="UTC"),by="15 min")
values=rnorm(14688)
data=data.frame(Date=dates,Data=values)
ggplot(data, aes(Date, Data))+geom_line()+
scale_x_datetime(limits=c(as.POSIXct(input$lowerlimit), as.POSIXct(input$upperlimit)), labels = date_format("%d-%m-%y"))+ylab("")+
ggtitle("My Plot")+xlab("")
})
observeEvent(input$plot1_dblclick, {
brush <- input$plot1_brush
if (!is.null(brush)) {
ranges$x <- c(brush$xmin, brush$xmax)
ranges$y <- c(brush$ymin, brush$ymax)
} else {
ranges$x <- NULL
ranges$y <- NULL
}
})
}
shinyApp(ui=ui, server=server)
但是我收到错误,上面写着“必须提供Origin”。
我知道我仍然将lowerlimit
和upperlimit
作为scale_x_datetime
参数,但我仍然希望如此,并且轴限制仅在部分情节时发生变化已被选中放大。
答案 0 :(得分:2)
尝试用daxgraph绘制x轴缩放
https://rstudio.github.io/dygraphs/
library(shiny)
library(dygraphs)
ui <- fluidPage(selectInput(inputId = "data",label="Make a choice", choices=c("A","B")),
dygraphOutput("plot1")
)
server <- function(input,output){
output$plot1 <- renderDygraph({
data=as.ts(rnorm(14688),start="2016-01-01" ,end= "2016-06-01")
dygraph(data) %>% dyRangeSelector(dateWindow = c("2016-01-01", "2016-06-01 23:45:00"))
})
}
shinyApp(ui=ui, server=server)