繁体   English   中英

使用d3.js,如何在图表上更快地显示数据?

[英]Using d3.js, how can I display data faster on my chart?

在我的代码中,我在折线图上加载了一个包含508个条目的JSON。 此JSON包含某些计算机发出的数据,键是计算机的名称。

这是我的JSON的结构:

{
    "AF3":3605.1496928113393,
    "AF4":-6000.4375230516,
    "F3":1700.3827875419374,
    "F4":4822.544985821321,
    "F7":4903.330735023786,
    "F8":824.4048714773611,
    "FC5":3259.4071092472655,
    "FC6":4248.067359141752,
    "O1":3714.5106599153364,
    "O2":697.2904723891061,
    "P7":522.7300768483767,
    "P8":4050.79490288753,
    "T7":2939.896657485737,
    "T8":9.551935316881588
}

我目前正在一个名为cont的计数器的帮助下读取数据,但是,我使用的代码需要很长时间来绘制图形:

data.length=508

if (data.length>cont)
 cont++`

for (var name in groups) {
  var group = groups[name]
  group.data.push(aData[cont][name])
  group.path.attr('d', line)
  console.log(cont)
}

在此输入图像描述

正如你在上面的gif中看到的,我的代码花了太长时间来绘制所有数据点。 我想毫不拖延地绘制我的数据集的所有数据元素(在这种情况下为508),例如:

data=[{508 elements}];
tick(data)=> draw the points in the graph at the same time, by dataset.

data2=[{50 elements}];
tick(data)=> draw the points in the graph at the same time, by dataset.

tick是绘制坐标的函数的名称,而不会失去动画的感觉。

在此输入图像描述

怎么办?

这是我的代码的链接:

http://plnkr.co/edit/y8h9zs1CpLU1BZRoWZi4?p=preview

在我看来,你的问题是图形是同步的 - “持续时间”既用于动画也用于图形转换。 从本质上讲,改变持续时间将无济于事。

您可以引入时间倍增器。 然后尝试将持续时间除以2,并使用乘数2.您的实际数据持续时间现在是持续时间* timeMultiplier(您可能希望更改名称以减少混淆,或在动画中使用timeDivider)。

// Shift domain
x.domain([now - (limit - 2) * duration * timeMultiplier, now - duration * timeMultiplier])

// Slide x-axis left
axis.transition()
  .duration(duration)
  .ease('linear')
  .call(x.axis);

// Slide paths left
var t = paths.attr('transform', null)
  .transition()
  .duration(duration)
  .ease('linear')
t.attr('transform', 'translate(' + x(now - (limit - 1) * duration * timeMultiplier) + ')')
  .each('end', tick)

你可能尝试的另一件事是一次添加两个点,即你跳过奇数刻度上的转换,并在偶数刻度上移动两倍 这会降低开销,但会使动画变得有点晃动(但不是很多,因为它也会播放得更快)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM