带有实时数据的 NVD3 折线图

2023-11-23

我有一个使用 NVD3.js 编写的非常简单的折线图。我写了一个基于计时器的简单重绘,从我见过的示例中提取,但出现错误

未捕获的类型错误:无法读取未定义的属性“y”

JS 是

    var data = [{
        "key": "Long",
        "values": getData()
    }];
    var chart;

    nv.addGraph(function () {
          chart = nv.models.cumulativeLineChart()
                      .x(function (d) { return d[0] })
                      .y(function (d) { return d[1] / 100 })
                      .color(d3.scale.category10().range());

        chart.xAxis
            .tickFormat(function (d) {
                return d3.time.format('%x')(new Date(d))
            });

        chart.yAxis
            .tickFormat(d3.format(',.1%'));

        d3.select('#chart svg')
            .datum(data)
            .transition().duration(500)
            .call(chart);

        nv.utils.windowResize(chart.update);

        return chart;
    });


    function redraw() {
        d3.select('#chart svg')
            .datum(data)
          .transition().duration(500)
            .call(chart);
    }

    function getData() {
        var arr = [];
        var theDate = new Date(2012, 01, 01, 0, 0, 0, 0);
        for (var x = 0; x < 30; x++) {
            arr.push([theDate.getTime(), Math.random() * 10]);
            theDate.setDate(theDate.getDate() + 1);
        }
        return arr;
    }

    setInterval(function () {
        var long = data[0].values;
        var next = new Date(long[long.length - 1][0]);
        next.setMonth(next.getMonth() + 1)
        long.shift();
        long.push([next.getTime(), Math.random() * 100]);
        redraw();
    }, 1500);

第二个答案(评论后)

我在看累积折线图的来源。您可以看到在图表创建过程中创建了 display.y 属性。它依赖于一个私有方法:“indexify”。如果该方法的某些衍生方法被公开,那么也许你可以做类似的事情chart.reindexify()重画之前。

作为临时解决方法,您可以在每次更新时从头开始重新创建图表。如果你删除过渡,那似乎工作正常。 jsfiddle 示例:http://jsfiddle.net/kaliatech/PGyKF/.

第一个答案

我相信cumulativeLineChart 中存在错误。看来cumulativeLineChart 动态地将“display.y”属性添加到系列中的数据值中。但是,当将新值添加到系列以进行重绘时,它不会重新生成此属性。尽管我是 NVD3 的新手,但我不知道如何让它做到这一点。

您真的需要累积折线图,还是普通折线图就足够了?如果是这样,我必须对您的代码进行以下更改:

  • 更改自累积折线图转折线图
  • Change from using 2 dimension arrays of data, to using objects of data (with x,y properties)
    • (我对 NVD3 不太熟悉,无法说出需要什么数据格式。2D 数组显然适用于初始加载,但我认为它不适用于后续重绘。这可能与您在cumulativeLineChart 中遇到的相同问题有关.我认为更改为对象也会修复cumulativeLineChart,但似乎并没有。)

我还更改了以下内容,尽管不那么重要:

  • 将您的 getData 函数修改为创建日期的新实例以避免随着日期的增加而共享引用带来的意外后果。

  • 修改了更新间隔函数,以按天(而不是月)增量生成新数据,其中 y 值与 getData 函数的范围相同。

这是一个包含这些更改的工作 jsfiddle:

  • http://jsfiddle.net/kaliatech/4TMMD/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带有实时数据的 NVD3 折线图 的相关文章

  • 具有水平和垂直组合布局的可折叠树

    我正在尝试在 D3 中创建一个可折叠树 它结合了水平 第一级和第二级 和垂直 3 级 布局 这里有一个jsfiddle http jsfiddle net artemkolotilkin z7tb23Lo 到目前为止我所得到的 除了一件事之
  • D3.js 中的点图

    我有兴趣创建一个Dot plot 每个数据值都有连续的点 但到目前为止我所管理的是为每个值创建一个点 更清楚地说 假设对于 array1 我希望第一个值创建 5 个圆圈 第二个值创建 4 个圆圈 依此类推 array1 5 4 2 0 3
  • 将元素添加到 D3 圆包节点

    我正在尝试制作一个可缩放的圆形包装图 我希望每个子圆圈包含一个较小的图表 该图表始终具有相同的结构 即 4 列 只有条形的高度会改变 我尝试添加一个简单的rect到目前为止我的图表 但矩形没有添加到圆圈中并且是静态的 JS var marg
  • 将任何 D3.js 图表与 DC.js 集成

    我试图弄清楚如何轻松地将任何 D3 js 图表与 DC js 库集成 以便在所有图表之间使用交叉过滤功能 我也确实理解以前曾问过这种性质的问题 添加链接以供参考 DC js 监听图表组渲染 https stackoverflow com q
  • D3.js - 具有多个环的圆环图

    以下示例显示了 D3 js 中的圆环图 是否可以向图表添加多个圆环 var dataset apples 53245 28479 19697 24037 40245 var width 460 height 300 radius Math
  • 避免在 ES6 的函数内定位 this 的对象作用域

    例如 我正在使用 D3 js 运行一个项目 导入特定模块并调用它们的函数 Setup TypeScript ES6 导入特定的 D3 组件 角6 我有一个对象 在本例中是一个角度指令 并在 SVG 画布上绘制一些圆圈 并希望它们在拖动事件上
  • 如何在“object”标签内选择 SVG?

    HTML 页面的内容如下所示 方法如下script js looks var tooltip d3 select body append div style position absolute sty
  • 未捕获的类型错误:无法读取未定义的属性“albersUsa”

    以前可能有人问过这个问题 但我希望我能得到针对我遇到的问题的答案 我是 d3 的新手 我现在正在尝试绘制一个纬度 经度 当我成功完成第一个纬度 经度时 我将完成其余的工作 感谢专家的任何帮助 谢谢 尝试在特定区域绘制蜂窝基站 这是代码
  • d3.js比例符号图:根据数据值设置圆的半径

    我正在遵循这个关于如何使用 d3 js 和 mapbox 制作地图的精彩示例 https franksh com posts d3 mapboxgl https franksh com posts d3 mapboxgl 它工作得很好 除了
  • 如何在 Angular 2 中实现 D3

    我想将这段代码从 d3 js 实现到 Angular 2 组件 但我不知道如何将 js 文件调用到组件 ts 文件中 我找到了一些折线图的代码 包括index html和lineChart js 我怎样才能调用javascriptngAft
  • d3 v4 使用 TypeScript 进行拖放

    我正在使用 D3 库 v4 和 Angular2 我想拖放 svg 元素 我有一个代码 item call d3 drag on start dragStarted on drag dragged on end dragEnded and
  • 使用什么比例仅在 d3 js 中的 x 轴上表示年份

    我一直在 D3 Js 中开发年份 x 轴 与收入 y 轴 的面积图 数据如下 localData Revenue 4 5 Year 2011 Revenue 5 5 Year 2010 Revenue 7 0 Year 2012 Reven
  • 如何使用 d3.format 获取可本地化或可定制的 si 代码

    使用 SI 代码绘制图表正是我们想要的 我们的 y 轴值往往是较大的货币值 例如 10 411 504 201 20 缩写这个 至少在美国语言环境中 这应该转换为 10 4B 但是使用 d3 format 的 s 类型表示 SI 代码 这将
  • Javascript 将对象推送为克隆

    我将 d3 用于交互式网络应用程序 我需要绑定的数据在交互过程中发生变化 并且由 JSON 变量中的一些选定对象组成 为此 我在 JSON 变量上使用了映射 并进行了一些查询来选择适当的对象 对象被推送到列表中 并且该列表被绑定为新数据 我
  • 如何精确缩放已翻译的d3地图

    我有一张已翻译的地图 以使其正确适合画布 我正在尝试实现一种缩放它的方法 它确实有效 但是当您放大时它会远离中心 而不是以鼠标甚至画布为中心 这是我的代码 function map data total views var xy d3 ge
  • Dimple.js - 将数据标签添加到条形图的每个条形

    我使用的是dimple js 它基于d3 js 是否可以向本示例中提到的条形图的每个条形添加数据标签http dimplejs org examples viewer html id bars vertical http dimplejs
  • 在 d3.js 中换行长文本

    我想将长文本元素换行为宽度 这里的例子取自博斯托克的wrap功能 http bl ocks org mbostock 7555321 但似乎有两个问题 首先 wrap的结果没有继承元素的x值 文本左移 其次它绕在同一条线上 并且lineHe
  • 如何处理 d3 中 Beeswarm 图中的碰撞?

    我一直在玩这个例子here https gf neocities org co2bs co2bee html一会儿 我想做的是突出显示图中的单个节点 圆圈 通过使用边框使其变大 稍后我也想在其中添加文本或字母 目前 我已经圈了Bhutan图
  • 快速响应的交互式图表/图形:SVG、Canvas 还是其他?

    我正在尝试选择正确的技术来更新一个项目 该项目基本上在可缩放 可平移的图表中渲染数千个点 当前使用 Protovis 的实现性能不佳 在这里查看 http www planethunters org classify http www pl
  • NVD3 - 配置轴上的刻度

    我有一个 nvd3 折线图 它显示时间序列 但无法在 x 轴右侧获取刻度 对于较长的时间跨度 它会按预期工作 但对于较短的时间跨度 此处 12 31 05 至 01 01 06 多个刻度显示相同的日期 请看一下JSFiddle 上此图表的代

随机推荐

  • 将图形导出为 PDF 时,可以导出绘图标签中的特殊符号/西里尔字母吗?

    我正在尝试将图形列表导出为 PDF 格式的单独帧 以便随后借助外部实用程序 例如 pdf2swf 编译矢量 SWF 动画 不幸的是 导出的 PDF 文件中的一些特殊字符 例如度数符号或三点 被损坏 这也是所有俄语字母的命运 请注意 当直接从
  • 如何让线条动画更流畅?

    我正在用 Java 制作一个简单的动画 并试图使其尽可能流畅 我仅使用每个 Shape 对象的 Double 内部类 并在 Graphics2D 对象中设置抗锯齿功能 只要我只使用 fill 方法 这一切都有效 但如果我还使用 draw 方
  • 致命错误:无法将 User 类型的对象用作数组

    应用程序上的用户通过电子邮件登录 此电子邮件处于会话中 通过此会话 我尝试获取该用户的更多信息 以打印出该用户的 姓氏 姓名和头像 当我在导航栏中执行此操作时 他做得很好 但在页面本身上却出现以下错误 致命错误 无法将 User 类型的对象
  • 如何重新安装 base-R 软件包(例如统计数据、图形、实用程序等)?

    我一直在 R 3 0 1 中使用 stats 包 没有任何问题 但今天我从 R 库位置删除了 stats 文件夹 现在我无法再安装它了 我尝试对其他软件包执行相同的操作 但我可以安装除 stats 之外的所有内容 install packa
  • 对于 64 位进程,kb 显示什么?

    我最近在分析调用堆栈时犯了一个错误 因为我没想到该应用程序是 64 位的 我使用了WinDbg命令kb显示调用堆栈和传递给方法的参数 在 64 位上 参数不是通过堆栈传递 而是通过寄存器 RCX RDX R8 和 R9 传递 看来WinDb
  • NSAttributedString 对齐不适用于 html 内容

    想要更改 html 标签的对齐方式 什么都不起作用 我在 HTML 中没有看到任何 CSS 没有其他设置可以更改对齐方式 我还直接在 UILabel 上设置左对齐 我缺少什么 代码位于 UILabel 扩展中 NSMutableParagr
  • VBA-SQL 对 Excel 工作表进行更新/插入/选择

    简而言之 我正在为我的客户制作一个调度程序 由于限制 它需要位于单个 Excel 文件中 尽可能小 因此 一个工作表充当 UI 而任何其他工作表将充当表格或设置 我正在尝试使用 SQL 我是新手 来处理单个工作表 名为 TblEmpDays
  • malloc 是否会在 Linux(和其他平台)上延迟创建分配的支持页面?

    如果我要在 Linux 上malloc 1024 1024 1024 malloc 实际上做了什么 我确信它会为分配分配一个虚拟地址 通过遍历空闲列表并在必要时创建新映射 但它实际上会创建 1 GiB 的交换页吗 或者是这样mprotect
  • 如何在运行时分配 ToolButton 的 OnClick 事件?

    我在设计时创建了一个没有工具按钮的 TToolBar 我的想法是在运行时创建 ToolButtons 并在创建表单时将它们放在那里 只是为了向用户显示打开了哪些表单 而无需在主菜单中打开 Windows 菜单 我有一个名为 Navigati
  • 外部模块中的模式在 Node.js 中不起作用

    我非常头疼尝试通过一个模块将一些常见的模式定义共享给我的代码库中的所有其他模块 我有一个 myproj schemas 模块 其中包含这两个模式 var mongoose require mongoose util require util
  • 使用 Bullet 和 RSpec gem 减少 n+1 查询

    将 Bullet Gem 与 RSpec 结合使用的有效方法是什么 现在 我觉得如果我将它与当前的单元测试框架一起使用 我会收到很多通知或测试失败 因为测试本身中的 n 1 查询与我的生产应用程序中发生的情况无关 例如检查值或关联 因此 修
  • 如何从 SQL 数据库流式传输 .flv 文件

    我想将 flv 文件存储在数据库中而不是文件系统中 这就是我现在可以做的 使用 ffmpeg 成功将 wmv 和 mpeg 转换为 flv 将图像存储在 SQL Server 中并使用 httphandler 在我的页面上显示它们 与 av
  • Java 计算整数数组中每个元素的出现次数

    我编写了以下代码片段来计算每个元素出现的次数 是否有可能以更短的方式实现这一目标 int arr 1 6 2 8 5 4 7 7 5 7 Arrays stream arr collect ArrayList new ArrayList a
  • 所有可用的 matplotlib 后端的列表

    当前后端名称可通过以下方式访问 gt gt gt import matplotlib pyplot as plt gt gt gt plt get backend GTKAgg 有没有办法获取可在特定机器上使用的所有后端的列表 您可以访问列
  • ASP.NET MVC - Linq to Entities 模型作为 ViewModel - 这是好的做法吗? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 真的是很快的问题 我目前正在使用 asp net MVC 和实体框架构建一个网站 我有几个存储库 它们返回实体或实体列表 我发现在我的大部分页面中 我必须从各种相关表中提取数据 只要我在查
  • 在 Scala 中从类型别名创建对象 [重复]

    这个问题在这里已经有答案了 如何从 scala 中的类型别名构造一个对象 type MyType List Int println List Int println MyType error not found value MyType 这
  • MongoDB 查找日期范围是否与其他日期重叠

    我有许多文档 其架构如下所示 每个文档都包含 开始日期 结束日期 如下架构所示 有没有一种简单的方法可以在保存新文档之前知道新文档的开始日期 结束日期是否会与以前保存的文档开始日期 结束日期重叠 谢谢 title owner notes s
  • ElasticSearch:禁用 Groovy 时对 _score 字段进行聚合

    我见过的每个例子 例如 ElasticSearch 在 score 字段上聚合 用于对 score 字段进行聚合或与 score 字段相关的聚合似乎需要使用脚本 由于 ElasticSearch 出于安全原因默认禁用动态脚本 有没有什么方法
  • 扫描 NFC 标签后是否可以启动应用程序?

    我有一个 NFC 标签 我想编写一个 Android 应用程序 当用手机扫描 NFC 标签时 该应用程序会自动启动并从 NFC 获取数据 假设设备已打开 NFC 并且手机上没有运行其他应用程序 这应该可以工作 我发现一些应用程序可以启动另一
  • 带有实时数据的 NVD3 折线图

    我有一个使用 NVD3 js 编写的非常简单的折线图 我写了一个基于计时器的简单重绘 从我见过的示例中提取 但出现错误 未捕获的类型错误 无法读取未定义的属性 y JS 是 var data key Long values getData