Chart.js——使用 update() 处理时间尺度数据集

2024-01-30

Chart.js (v2.7.2) 似乎为使用时间刻度的轴动态渲染折线图轴标签。这在使用时产生了一个独特的问题update()更新数据集后的方法。

update()开始一个结束于的跟踪ChartElement.determineDataLimits method:

// Convert labels to timestamps
for (i = 0, ilen = chart.data.labels.length; i < ilen; ++i) {
    labels.push(parse(chart.data.labels[i], me));
}

因为我没有labels我的元素data-- 每个数据集都有自己的标签,并且时间尺度标签是自动生成的 -- 上面的代码有效地阻止了我使用update()在我的时间刻度图表上。

我尝试过组合destroy()/clear() and render()尝试解决这个问题,但这会导致更奇怪的异常Chart.transition:

    transition: function(easingValue) {
        var me = this;

        for (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) {
            if (me.isDatasetVisible(i)) {
                me.getDatasetMeta(i).controller.transition(easingValue);
            }
        }

        me.tooltip.transition(easingValue);
    },

显然,me.getDatasetMeta(i).controller未定义。

我正在尝试做的是以下内容:

1)渲染一个类似于官方示例的时间刻度折线图:http://www.chartjs.org/samples/latest/scales/time/line-point-data.html http://www.chartjs.org/samples/latest/scales/time/line-point-data.html

2)通过AJAX检索全新的数据集

3)重新渲染折线图。

似乎是new Chart(context, config)构造函数是实际渲染时间刻度折线图的唯一方法。

我的问题有两个部分:

A)这是一个错误,还是我做错了什么?

B) 无论 (A) 的答案如何,是否有其他方法可以在不完全删除图表及其数据并在其位置渲染新图表的情况下执行此操作?


简短的回答:我将原始图表保存为可以调用的对象变量destroy()。打电话后destroy(),我将新图表渲染到同一对象变量。

长答案(代码示例,取自 ES6 源代码):

updateTimeScaleChart() {
    this.timeScaleChart.destroy()
    this.drawTimeScaleChart()
},

drawTimeScaleChart() {
    this.timeScaleChart = new Chart($('#timeScaleChart'), {
        type: 'line',
        data: this.prepareTimeScaleChartData(),
        options: {
            aspectRatio: 1.25,
            title: {
                display: true,
                text: 'Measured over Time'
            },
            scales: {
                xAxes: [{
                    type: 'time',
                    scaleLabel: {
                        display: true,
                        labelString: 'Date'
                    }
                }]
            }
        }
    });
},

this.drawTimeScaleChart()当 my 组件在等待检索 JSON API 数据时最初使用空白数据呈现时调用。

this.prepareTimeScaleChartData()是一种将我的 JSON API 响应格式化为预期的 ChartJS 数据结构的方法。

从那里开始,只需触发即可updateTimeScaleChart()用于适当的事件。

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

Chart.js——使用 update() 处理时间尺度数据集 的相关文章

  • 如何使用 Chartjs 绘制带有基于时间的 x 轴的单行彩色条

    我有一些基于时间的数据 我想要图形表示 并希望使用 Chartjs 来绘制它 数据如下所示 Time State 7am up 9am down 10 45am out 17 35 up 另外 每个 状态 都有自己的颜色 所以在使用条形图时
  • ng2-charts + 如何自定义X轴标签的位置?

    我在用着https valor software com ng2 charts https valor software com ng2 charts 用于生成以下图表 Expected Graph Actual Graph Right n
  • 如何添加到chart.js(圆环图)的链接?

    我想添加指向圆环图的链接 以便能够向用户发送包含通过单击的选项过滤的记录的页面 例如here http www chartjs org docs doughnut pie chart introduction 如果用户单击 绿色 我想将用户
  • ChartJS 仅显示特定刻度的大字体大小

    我试图强调 X 轴上的特定值 如果它满足特定条件 例如 在我的codepen https codepen io nuclearslug pen NJGmmy我只想更改 蓝色 栏的字体大小 这对于 Chart js 来说是可能的吗 var c
  • 如何在 Chartjs 中添加图像作为背景?

    我在可编程设备上使用 Chart js lib 我需要添加图像作为图表的背景 如果不可能 我如何将背景颜色更改为黑色 我无法使用 Jquery 因为平台不支持它 谢谢 谢谢你 我没想到CSS 我也以类似的方式添加了图像 canvas bac
  • 当鼠标悬停时,Chartjs 显示标签和单位统计

    当我的鼠标指针悬停在图表上时是否可以显示标签和单位 目前只有数字 对于下面的例子 我想展示 58 标签1 0 标签2 0 标签3 0 标签4 0 标签5 我的选项如下所示 var options Boolean Show a backdro
  • ChartJS:图表不显示所有数据

    由于某种原因 该图表没有显示数组中的最后两个数据 var data labels Brasil Argentina Chile Paraguai Peru Bol via M xico datasets data 9 19 7 77 6 8
  • ChartJS 不使用 Moment.js 显示时间数据

    我正在尝试按小时绘制给定日期的一系列数据点 并非每个小时都包含在数据集中 但我仍然想显示从 0 00 23 00 的时间并绘制可用的数据点 我的错误是 该方法未实现 要么找不到适配器 要么找不到适配器 提供了不完整的集成 然而 纵观文档 h
  • Chart.js 混合图表的工具提示悬停自定义

    我在尝试使用 Chart js 自定义混合图表的悬停工具提示时遇到了一些问题 我有一个条形图显示某种产品的总利润 还有一个折线图显示该某种产品的总量 当我将鼠标悬停在条形图上时 我希望工具提示显示如下内容 Total profit 1399
  • Chart.js 响应式条形图标签大小调整

    所以我有一个使用 Chart js 的条形图 并且启用了响应式功能 它似乎适用于某些图表 但不适用于其他图表 例如 我的条形图标签似乎没有随窗口调整大小 但其他所有内容都会使整个图表在较小的窗口尺寸下看起来非常奇怪 如何重新调整标签大小以使
  • 无法读取未定义的属性“标签”

    我刚刚学习 Chart js 的工作原理 因此我直接使用了 Chart js API 页面上的示例代码 但它似乎不起作用 我将以下代码放入脚本标记中 并收到 无法读取未定义的属性 标签 错误 不确定这个错误意味着什么 function va
  • 将 FirestoreCollection 转换为数组?

    我在将 Firestore 数据转换为 Chart js 图表的数组时遇到困难 从 Firestore 获取数据 fetchData Get data this updatesCollection this afs collection p
  • Chart.js 每个点的自定义图像

    我正在使用 Chart js 并且正在寻求有关散点图上每个点的自定义图像的帮助 我尝试过使用 javascript 图像数组 但它不起作用 我是 canvas 和 html5 的新手 我想要的是每个点都是用户的小个人资料图片而不是圆圈 一个
  • 如何在多行字符中只显示一个标签?

    我使用 Chart js 创建一个图表 该图有两条线 因此它默认也显示两个标签 但我需要一种配置 其中应该显示红色标签 而应该隐藏蓝色标签 标签not线 感谢您的帮助 var config type line data labels 16
  • 为什么 Chart.js 画布不考虑容器元素的填充?

    我将 Chart js 与简单的折线图一起使用 但 Chart js 计算的宽度和高度属性似乎基于父元素的总宽度和高度 忽略填充 var options maintainAspectRatio false responsive true v
  • ng2-charts:如何设置 y 轴的固定范围

    我有一个使用 ng2 charts 模块的 Chart js 图表 该图表在 y 轴上显示百分比 在 x 轴上显示时间 是否可以将 y 轴设置为显示 0 到 100 而不是基于数据的动态范围 尝试将以下内容添加到图表选项中 scales y
  • Chart.js - 在哪里可以找到应该注册哪些组件?

    我是 Chart js 的新手 看到了 v3 文档 Chart js 3 是可摇树的 因此有必要导入并注册您将要使用的控制器 元素 比例和插件 我想知道在哪里可以找到这些用于注册的东西 例如需要注册什么这个例子 https www char
  • Chartjs刻度标签位置

    尝试让 Y 轴刻度标签看起来像image https i stack imgur com XgoxX png 位于秤顶部且不旋转 缩放选项当前如下所示 scales yAxes id temp scaleLabel display true
  • Angular-Chart.js 它不显示图表

    我正在尝试使用 Angular chart js 它没有为我显示任何内容 这是我的 javascript 和 html 页面 function angular module app chart js controller BarCtrl f
  • 如何在 ChartJS 中创建自定义图例

    我需要使用 ChartJS 库为我的圆环图创建自定义图例 我已经使用 ChartJS 提供的默认图例创建了甜甜圈 但我需要一些修改 我希望其价值高于汽车名称 另外 我不喜欢粘性图例 我想将其与甜甜圈分开 这样我就可以更改字体 框的样式 例如

随机推荐