You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Quarto中通过ojs_define传递R日期至ojs并识别为日期类型的方法

解决Quarto中R日期传递到OJS的类型识别问题

当用ojs_define把R的日期数据传给OJS时,Date类型会被转成字符串,导致Plot图表的日期轴显示异常。有两种实用方法可以解决:

方法1:在R端把日期转为POSIXct类型

OJS会自动识别POSIXct格式的日期为JavaScript原生Date对象,直接在R里转换日期列即可:

library(tidyverse)

df <- data.frame(day = seq.Date(from = as.Date('2023-01-01'), 
                               to = as.Date('2023-06-15'), 
                               by = 'days')) %>%
  mutate(
    values = rnorm(mean = 10, sd = 2, n = n()),
    day = as.POSIXct(day)  # 把Date转成POSIXct
  )

ojs_define(plot_data = df)

OJS代码不需要修改,原有的Plot代码会正确识别日期类型,自动渲染合适的日期轴。

方法2:在OJS端手动转换日期

如果不想改动R的数据处理逻辑,直接在OJS里把字符串转成Date对象,或者在Plot配置里指定x轴类型:

方式2a:提前转换所有日期数据

# 将plot_data中的day字符串转为Date对象
const processedData = plot_data.map(item => ({
  ...item,
  day: new Date(item.day)
}))

Chart = Plot.plot({
  marks: [
    Plot.line(processedData, 
      {x: "day", y: "values"}, 
      { stroke: "black" }
    )
  ]
})

方式2b:在Plot中直接指定x轴类型

Chart = Plot.plot({
  marks: [
    Plot.line(transpose(plot_data), 
      {x: {value: "day", type: "date"}, y: "values"},  # 指定x为日期类型
      { stroke: "black" }
    )
  ]
})

两种方法都能让OJS正确识别日期,解决图表格式异常的问题。

内容的提问来源于stack exchange,提问作者kjellhaakon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 13:53:13