迭代D3图中的键/值以获得折线图

时间:2015-07-08 19:19:05

标签: javascript json d3.js

这是一个非常简单的问题,但我似乎无法弄清楚。

我有一个巨大的JSON(大约50,000行),其中每个部分包含一个90%的百分位值,一个计时器名称,以及其他几个无用的数据。

我试图从第90个百分位数制作图表,其中计时器名称是相同的。我使用this tutorial中的代码对所有计时器名称进行分组是相同的。以下是执行此操作的代码:

var dataGroup = d3.nest()
    .key(function(d){
        return d.timerName;
    })
    .entries(info);

所以现在JSON按键/值对分组如下:

[{
   "key": "Timer1",
   "values": [{
       "timerName": "Timer1",
       "ninetieth": "202",
       "year": "2000"
   }, {
       "timerName": "Timer1",
       "ninetieth": "215",
       "year": "2002"
   }, {
       "timerName": "Timer1",
       "ninetieth": "179",
       "year": "2004"
   }, {
       "timerName": "Timer1",
       "ninetieth": "199",
       "year": "2006"
   }, {
       "timerName": "Timer1",
       "ninetieth": "134",
       "year": "2008"
   }, {
       "timerName": "Timer1",
       "ninetieth": "176",
       "year": "2010"
   }]
}, {
   "key": "Timer2",
   "values": [{
       "timerName": "Timer2",
       "ninetieth": "100",
       "year": "2000"
   }, {
       "timerName": "Timer2",
       "ninetieth": "215",
       "year": "2002"
   }, {
       "timerName": "Timer2",
       "ninetieth": "179",
       "year": "2004"
   }, {
       "timerName": "Timer2",
       "ninetieth": "199",
       "year": "2006"
   }, {
       "timerName": "Timer2",
       "ninetieth": "134",
       "year": "2008"
   }, {
       "timerName": "Timer2",
       "ninetieth": "176",
       "year": "2013"
  }]
}]

我只需要帮助弄清楚如何通过并为每个键提供单独的折线图'如果这是有道理的。所以我需要一个Timer1的图表,折线图的值是'九十'中的全部6个。名为" Timer1"。

的键下的值

如果有人可以提供帮助,那就太棒了!这是我到目前为止的代码(它创建了图表所在的框,包括刻度线和所有内容,但实际上没有显示任何行):http://jsfiddle.net/fsx9o8c5/

enter image description here

1 个答案:

答案 0 :(得分:0)

http://jsfiddle.net/fsx9o8c5/6/

我已经更新了你想要的东西。

主要变化是

dataGroup.forEach(function(d, i){
  graph.append('svg:path')
    .attr('d', line(d.values))
    .attr('stroke', 'blue')
    .attr('stroke-width', 2)
    .attr('fill', 'none');
});

graph.append('svg:path')
        .attr('d', line(data))
        .attr('stroke', 'blue')
        .attr('stroke-width', 2)
        .attr('fill', 'none');

因为您只想将当前数据附加到当前图表中。