在 Shiny 中单击 dygraph 中的一个点并在 POSIXct 中打印出其相应的日期
clicking on a point in dygraph in Shiny and printing out its corresponding date in POSIXct
我想点击 dygraph 中的一个点并以 "%Y-%m-%d %H:%M:%S" 格式获取其对应的日期。在这里我重现了我的问题:
library(dygraphs)
library(tidyverse)
library(data.table)
library(shiny)
dates <- seq(as.POSIXct("2021-01-01 05:00:00"), as.POSIXct("2021-01-05 05:00:00"), by = 8*3600)
set.seed(24)
df <- data.table(date = dates,
percentage = round(runif(length(dates), min = 0, max = 1), digits = 2)
)
ui <- fluidPage(
fluidRow(
column(width = 12,
dygraphOutput("dygraph")
)
),
fluidRow(
verbatimTextOutput("click")
)
)
server <- function(input, output){
output$dygraph <- renderDygraph({
dygraph(df)
})
output$click <- renderPrint({
input$dygraph_click$x
})
}
shinyApp(ui = ui, server = server)
输出结果如下:
我的问题是它没有给我正确的格式。我尝试使用格式功能,但没有用。我在 renderprint 中使用了以下行:
format(as.POSIXct(input$dygraph_click$x), "%Y-%m-%d %H:%M:%S")
这是输出:
它没有正确显示 hour:minute:second。
有谁知道如何点击相应的点打印日期的POSIXct格式?如果有任何帮助,我将不胜感激。
您可以使用lubridate::ymd_hms
将input$dygraph_click$x
转换为POSIXct
格式并使用format
显示输出。
output$click <- renderPrint({
format(lubridate::ymd_hms(input$dygraph_click$x, tz = Sys.timezone()))
})
完整代码-
library(dygraphs)
library(tidyverse)
library(data.table)
library(shiny)
dates <- seq(as.POSIXct("2021-01-01 05:00:00"),
as.POSIXct("2021-01-05 05:00:00"), by = 8*3600)
set.seed(24)
df <- data.table(date = dates,
percentage = round(runif(length(dates), min = 0, max = 1), digits = 2)
)
ui <- fluidPage(
fluidRow(
column(width = 12,
dygraphOutput("dygraph")
)
),
fluidRow(
verbatimTextOutput("click")
)
)
server <- function(input, output){
output$dygraph <- renderDygraph({
dygraph(df)
})
output$click <- renderPrint({
format(lubridate::ymd_hms(input$dygraph_click$x, tz = Sys.timezone()))
})
}
shinyApp(ui = ui, server = server)
我想点击 dygraph 中的一个点并以 "%Y-%m-%d %H:%M:%S" 格式获取其对应的日期。在这里我重现了我的问题:
library(dygraphs)
library(tidyverse)
library(data.table)
library(shiny)
dates <- seq(as.POSIXct("2021-01-01 05:00:00"), as.POSIXct("2021-01-05 05:00:00"), by = 8*3600)
set.seed(24)
df <- data.table(date = dates,
percentage = round(runif(length(dates), min = 0, max = 1), digits = 2)
)
ui <- fluidPage(
fluidRow(
column(width = 12,
dygraphOutput("dygraph")
)
),
fluidRow(
verbatimTextOutput("click")
)
)
server <- function(input, output){
output$dygraph <- renderDygraph({
dygraph(df)
})
output$click <- renderPrint({
input$dygraph_click$x
})
}
shinyApp(ui = ui, server = server)
输出结果如下:
我的问题是它没有给我正确的格式。我尝试使用格式功能,但没有用。我在 renderprint 中使用了以下行:
format(as.POSIXct(input$dygraph_click$x), "%Y-%m-%d %H:%M:%S")
这是输出:
它没有正确显示 hour:minute:second。
有谁知道如何点击相应的点打印日期的POSIXct格式?如果有任何帮助,我将不胜感激。
您可以使用lubridate::ymd_hms
将input$dygraph_click$x
转换为POSIXct
格式并使用format
显示输出。
output$click <- renderPrint({
format(lubridate::ymd_hms(input$dygraph_click$x, tz = Sys.timezone()))
})
完整代码-
library(dygraphs)
library(tidyverse)
library(data.table)
library(shiny)
dates <- seq(as.POSIXct("2021-01-01 05:00:00"),
as.POSIXct("2021-01-05 05:00:00"), by = 8*3600)
set.seed(24)
df <- data.table(date = dates,
percentage = round(runif(length(dates), min = 0, max = 1), digits = 2)
)
ui <- fluidPage(
fluidRow(
column(width = 12,
dygraphOutput("dygraph")
)
),
fluidRow(
verbatimTextOutput("click")
)
)
server <- function(input, output){
output$dygraph <- renderDygraph({
dygraph(df)
})
output$click <- renderPrint({
format(lubridate::ymd_hms(input$dygraph_click$x, tz = Sys.timezone()))
})
}
shinyApp(ui = ui, server = server)