d3.js D3堆栈图---堆栈问题()

dwbf0jvd  于 2022-11-12  发布在  其他
关注(0)|答案(1)|浏览(195)

最近,我一直在尝试重新创建迈克·博斯托克的堆叠图,就像他在《观察笔记》中所展示的那样:
https://observablehq.com/@mbostock/most-popular-operating-systems-2003-2020
当我插入数据时,代码实际上在笔记本中工作,但当我在本地环境中运行它时,似乎会崩溃。我不是将Observable笔记本代码转换为HTML/JS的大师,但通常我可以在一些试验和错误后完成它。这似乎是我现在所无法做到的。当我运行这段代码时:

function _series(d3,data){return(
d3.stack()
    .keys(d3.group(data, d => d.Article).keys())
    .value(([, values], name) => values.get(name) || 0)
  (d3.rollup(data, ([d]) => d.stock, d => +d.date, d => d.Article))
)}

该函数只返回一个输入数组,而在原始笔记本中,它实际上返回一个包含各个项目的各个日期的值的数组。
所以我的问题是,我并不真正理解这段代码中发生了什么。为什么在调用value之后,在括号中有一个单独的d3.rollup?value实际上是在两个不同的括号中用两组参数调用的吗?我的JavaScript很糟糕,我对它也不是很熟悉。
它在笔记本电脑中运行,但在笔记本电脑之外却不能运行,这一事实是否与Observable的幕后发生的事情有某种联系?我如何修改代码,使其能够在Observable之外运行?
非常感谢,
拉夫

beq87vna

beq87vna1#

我一直在加载数据,它看起来和笔记本中的数据几乎完全一样,但“date”是string而不是datetime。我没有注意到笔记本中有一个单独的单元格处理日期。
不管怎样,在我分析了日期之后,一切都很好。

相关问题