我在一个夸托文档中使用R和ojs代码块,我在R中进行数据操作,并通过使用ojs_define
函数将 Dataframe 传递给ojs块。
我的问题是日期似乎在ojs块中被解释为字符串。结果是图中的格式不正确。
关于如何将日期从r传递到ojs,使ojs的plot函数将其识别为日期,有什么提示吗?
示例:
---
title: "Code example"
format: html
editor: visual
execute:
echo: false
warning: false
---
```{r}
#Some data with a date columm
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()))
#Passing this to ojs through ojs_define
ojs_define(plot_data=df)
Chart = Plot.plot({
marks: [
Plot.line(transpose(plot_data),
{x: "day", y: "values"},
{ stroke: "black" }
)
]}
)
1条答案
按热度按时间arknldoa1#
由于日期在通过
ojs_define
时被解析为字符串,因此我们可以在ojs块中将string-dates类型转换回datetime类型。在这里,我们将使用
d3.timeParse
来创建一个datetime解析器,并将使用Arquero
库(受dplyr
的设计启发)来derive
(即突变)day
列以获得datetime值。这里有两点需要注意
Arquero
使用数据表。但是plot_data
是JSON格式。因此,我们需要transpose
将其转换为对象数组,然后将其传递给aq.from
以转换为表。1.要在
derive
中使用该parser
,我们需要用aq.escape
Packaged => parse(d)
Plot