D3:在数组对象的多折线图中绘制交互式悬停线
D3: draw interactive hover line in multiple line chart for array object
我正在尝试制作一个带有悬停线的 d3 图表,数据是从服务器获取的,例如:
data = [
{
key: 'series_1',
values: [
{
time: 1420257136216,
value: 123
},
... ...
]
},
... ...
]
这里是我的代码的快速浏览:Fiddle
问题:
我无法从 d3 二分线函数获得基于 x 值(时间)的正确 y 值,二分线函数的索引 return 不是我期望的。
我在谷歌上做了一些搜索,按照这个例子d3.js Multi-series line chart interactive,用于平分线的数据是这样的:
data = [
{
series_1: '123',
series_2: '234',
time: '1420257136216'
},
....
]
在我从 d3 等分线函数获得正确的 return 索引之前,我是否需要像上面的格式一样限制我的数据(也对数据进行排序)?或者我可以通过任何其他方式实现它?
非常感谢
你的二分函数对你的数据是错误的。你有:
var bisectDate = d3.bisector(function(d) { return d.date; }).left;
但是你的 属性 是 time
:
var bisectDate = d3.bisector(function(d) { return d.time; }).left;
然后您可以将其(对于拳头系列)称为:
bisectDate(data[0].values, someTimeStamp);
如果您的系列数据未按时间排序,请执行以下操作:
var arr = data[0].values;
arr.sort(function(a, b) { return a.time - b.time; });
bisectDate(arr, someTimeStamp);
已更新 fiddle。
我正在尝试制作一个带有悬停线的 d3 图表,数据是从服务器获取的,例如:
data = [
{
key: 'series_1',
values: [
{
time: 1420257136216,
value: 123
},
... ...
]
},
... ...
]
这里是我的代码的快速浏览:Fiddle
问题:
我无法从 d3 二分线函数获得基于 x 值(时间)的正确 y 值,二分线函数的索引 return 不是我期望的。
我在谷歌上做了一些搜索,按照这个例子d3.js Multi-series line chart interactive,用于平分线的数据是这样的:
data = [
{
series_1: '123',
series_2: '234',
time: '1420257136216'
},
....
]
在我从 d3 等分线函数获得正确的 return 索引之前,我是否需要像上面的格式一样限制我的数据(也对数据进行排序)?或者我可以通过任何其他方式实现它?
非常感谢
你的二分函数对你的数据是错误的。你有:
var bisectDate = d3.bisector(function(d) { return d.date; }).left;
但是你的 属性 是 time
:
var bisectDate = d3.bisector(function(d) { return d.time; }).left;
然后您可以将其(对于拳头系列)称为:
bisectDate(data[0].values, someTimeStamp);
如果您的系列数据未按时间排序,请执行以下操作:
var arr = data[0].values;
arr.sort(function(a, b) { return a.time - b.time; });
bisectDate(arr, someTimeStamp);
已更新 fiddle。