当前位置: 首页 > 知识库问答 >
问题:

使用图表在Javascript中更新图表。js

茹高义
2023-03-14

我一直在使用图表。js图表。js文档

我有一张显示多条线的图表。该图是单位时间内药物浓度的变化图,我想在各种场景下运行该图,如实时、x2、x4、x8等,因此,当下一秒到来时,我希望该图使用新的计算数据进行更新,然后刷新/更新图表。

//simDur is the duration i want the simulation to run for eg 1hr/3600secs
for(t=0; t < simDur; t++)
{
    timer(); //function awaits here for the next second to arrive
    generateData(); //calculate the new data yArr;
    myLineChart.addData(yArr, t); //yArr is an array of Y values, t=time
    myLineChart.update();  //update the chart with the new added data
}

问题是图表在for循环完成之前不会刷新,我希望图表每秒显示更新的数据。

文档中说update()应该执行以下操作。。。

在图表实例上调用update()将使用任何更新的值重新渲染图表,允许您编辑多个现有点的值,然后在一个动画渲染循环中渲染这些点。

共有1个答案

李景天
2023-03-14

如果你的定时器() 包含您评论中的代码,即。

(function Forever() {
    var now = new Date();
    var hh = now.getHours();
    var mm = now.getMinutes();
    var ss = now.getSeconds();
    var g_realTimeNow = (ss + (mm * 60) + (hh * 60 * 60));
    //convert to secs
    console.log("Global time: " + g_realTimeNow);
    setTimeout(Forever, 1000);
})();

这实际上并不等待setTimeout处理程序完成后再返回。因此,实际上,timer()被无延迟地调用simDur次。

修改你的代码如下,你应该得到更接近你需要的东西(我已经使用了setInterval,但是你也可以使用setTimeout,但是它会稍微复杂一点)

var t = 0;
var interval = setInterval(function () {
    if (t >= simDur) {
        clearInterval(interval);
        return;
    }

    generateData(); //calculate the new data yArr;
    myLineChart.addData(yArr, t); //yArr is an array of Y values, t=time
    myLineChart.update();  //update the chart with the new added data

    t++;
}, 1000)

小提琴-http://jsfiddle.net/xhequLjw/

 类似资料:
  • 我看过很多关于如何在chart.js中添加数据的教程,但都是针对单个图表的。 我使用chartjs创建多个图表(每个图表都有自己的画布和唯一的ID)。例如:图表1位于id=“c1”的画布中,图表2位于id=“c2”的画布中。如何选择图表1并添加新数据?

  • 我有一个有大约200张幻灯片的PowerPoint演示文稿。每张幻灯片都有一个图表,其中的数据通过到主xlsx文件的链接每月更新一次。 为了不在图表中显示空值(未来月份),我打开数据编辑器(图表右键单击>Edit data...)并选择直到当前月份的范围。 我在PowerPoint中为它写了一个宏:

  • 我正在用一些初始数据绘制一个条形图,然后在单击按钮时尝试更新。我收到错误“未捕获的类型错误:无法读取未定义的属性'长度'”。单击更新后,将发生错误。如何解决此问题并启用更新功能以绘制新的条形图? D3代码:

  • 我在chartJS中制作了一个图表,我想根据用户从下拉列表中选择的内容使用新数据更新它,使用相同的画布。问题是当我执行更新功能时,图表会用新数据更新,但过一会儿又会回到原始图表。我该如何解决这个问题?下面是代码,感谢大家的帮助:

  • 问题内容: 我学到了几个区块。我已经借助jquery做出了响应式d3直方图。 现在,我想在使用ajax更新d3图表方面走得更远。 我刚进入jQuery。 并了解ajax的工作原理。 搜索了很长时间,但在官方d3网站或其他任何地方都找不到任何有效的示例。 任何帮助对我来说都是有益的,让我掌握了通过Ajax更新d3图表的基本功能。 提前致谢!! 问题答案: 您只需在ajax成功中调用d3函数:

  • 问题内容: 有没有人会推荐一个特定的JavaScript图表库-特别是一个根本不使用flash的库? 问题答案: 越来越多的不需要Flash的用于纯JavaScript制图的开源和商业解决方案。在此回复中,我将仅介绍开放源代码选项。 对于不需要Flash的图形,有两种主要的JavaScript解决方案类: 基于画布,在IE中使用ExplorerCanvas呈现,而后者又依赖于VML 基于标准的浏览