私は、ggplot2プロットでx軸の制限を設定するためにdateRangeInputからの出力を使用するR/shinyアプリケーションで作業しています。 dateRangeInputを使用してデータをサブセット化すると問題はありませんが、dateRangeInputによって返された日付を認識するためにscale_x_date(またはscale_x_continuousまたはscale_x_datetime)を取得できません。私はformat()、as.Date、as.POSIXctを使ってみましたが、何の幸運もありませんでした。私は私が手dateRangeInputの出力を変換しようとするかどうかは:shiny dateRangeInputを使用してggplotの軸制限を設定する
Invalid input: date_trans works with objects of class Date only
はここに私の問題の(たぶん)再現可能な例を示します
library(shiny)
library(ggplot2)
library(dplyr)
tp_date_pressed <- as.POSIXct(c("2016-01-01", "2016-03-01"))
sigma <- c(1, 1.5)
data <- data.frame(tp_date_pressed, sigma)
ui <- fluidPage(
dateRangeInput('date',
label = 'Date Range',
start = Sys.Date() - 180,
end = Sys.Date(),
max = Sys.Date()
),
plotOutput("plot")
)
server <- function(input, output) {
subData <- reactive({
data %>%
filter(
as.Date(tp_date_pressed) >= as.Date(input$date[1]),
as.Date(tp_date_pressed) <= as.Date(input$date[2])
)
})
output$plot <- renderPlot({
ggplot(subData(), aes(tp_date_pressed, sigma)) +
geom_point() +
scale_x_date(limits = input$date)
})
}
shinyApp(ui = ui, server = server)
ありがとうジョン!私はtp_date_pressedがPOSIXctとして供給されたときにggplotが魔法のように正しいことをするので、scale_x_dateの入力$ dateを使って頭を叩きました。軸のデータと軸の制限が同じオブジェクトタイプである必要があることは私には決してありませんでした。 – blongworth