【发布时间】:2013-06-07 21:15:11
【问题描述】:
我正在处理 D3 中的多折线图,但在渲染时遇到了一些问题。我正在尝试使用如下所示的数据呈现两行:
[
{ key:"line 1", values: [ {x:1, y:1}, {x:2, y:2} ] },
{ key:"line 2" , values: [ {x:1, y:1}, {x:2, y:2}, {x:3, y:3} ] }
]
“第 2 行”渲染得很好,但“第 1 行”在 x = 2 处停止渲染。我知道我的数据集可能被认为是不完整的,但我很好奇是否有办法将默认值设置为 0,其中x 有间隙或空值吗?特别是在这个例子中,我希望“第 1 行”显示 y=0,其中 x=3。
【问题讨论】:
-
这不是 JS 会做的事情,但 nvd3.js API 可能包含启用此功能的设置。可以编写一些插入第三个元素的 JavaScript,但我会先检查 nvd3 API 的设置。
-
(你还没有告诉我们你用什么来画线)。如果您使用 d3 的
d3.svg.line()函数来绘制路径,那么肯定没有内置方法可以告诉它绘制比数组中的元素更多的点。它确实有一个defined()方法,它可以在这里发挥作用,但你必须事先用那些“未定义”元素填充你的数组。我也怀疑 nvd3 有什么可以处理的,但没有检查。 -
@AndrewGibson,我目前有一种编程方法来填充空数据点,但希望我可以像你建议的那样从 D3 API 中使用设置或功能。还没找到……
-
就像 meetamit 我现在怀疑 nvd3 有这个设置,但这是我会寻找的东西。祝你好运。
-
@DanRamos 你走在正确的道路上。 NVD3 和 D3 没有“填充”缺失值的能力,因为它不可能知道缺失了哪些值,但它们具有帮助您获取值的便利功能。 misoproject.com/dataset 也有一些很好的实用程序来处理客户端中的数据。
标签: javascript d3.js time-series nvd3.js