所以我知道您可以在Dygraph中使用如下数组定义独立系列:
[
[1, null, 3],
[2, 3, 7],
[3, null, 7],
]
我从几个不同的数据流中获取数据。让我们说D1和D2。我加载D1然后加载D2并一次添加一行数据。我真的没有办法将D1和D2合并为一个阵列。我只是在他们到达时一次添加一行:
[
[1, null, 3],
[2, 3, 7],
[3, null, 7],
[3, 15, null],
]
所以你可以看到现在有两行,其中3为x值。这一切都显示在图表上就好了。将鼠标悬停在图表上的点上时会出现问题。只有以3开头的第一行才会显示图例值。 x = 3的第二行从不显示图例值。
以下是此操作的演示:
http://jsfiddle.net/cryptdemon/6WWtz/
以下是两个x = 3行联合的示例,它可以正常显示两个系列的值:
http://jsfiddle.net/cryptdemon/AYzH2/
有没有办法让两个系列显示非联合行的值?我将来自两个独立源的时间戳数据绘制成图形,这些源加载在仅{timestamp, deviceid, value}
的大json数组中。你能想到这方面的任何变通方法,还是我错过了什么?
答案 0 :(得分:1)
不。您必须自己联合数据。编写算法并不算太难。祝你好运!
答案 1 :(得分:0)
我决定做的就是使用Google的可视化库来合并行。我已经在使用谷歌的Dygraph数据表了,所以很容易使用他们的另一大块API:
https://developers.google.com/chart/interactive/docs/reference#google_visualization_data_group
这是我想出的:
var tblCols = Array(numColumnsInTable);
/**
* This is used to union table rows as an aggregator
* function for the google table group
*/
var union = function(values){
for(var i = 0; i<values.length; i++){
//our rows are all mutually exclusive
//except for the x value, so we just
//look for a value that isn't null
if(values[i] != null){
return values[i];
}
}
return null;
}
}
for(var i=0; i<tblCols.length; i++){
tblCols[i] = {
'column' : i+1,
'aggregation' : union,
'type': 'number'
}
}
var groupedTable = google.visualization.data.group(
originalTable,
[0], //group by 0th column
tblCols //columns to put in new table
);
chart.updateOptions({'file': groupedTable});