Chart.js (v2.7.2) 似乎会为使用时间刻度的轴动态呈现折线图轴标签。这在更新数据集后使用 update()
方法时会产生一个独特的问题。
update()
启动一个以图表元素.determine数据限制
方法结尾的跟踪:
// Convert labels to timestamps
for (i = 0, ilen = chart.data.labels.length; i < ilen; ++i) {
labels.push(parse(chart.data.labels[i], me));
}
因为我的数据
中没有标签
元素 - 每个数据集都有自己的标签,并且时间刻度标签是自动生成的 - 上面的代码有效地阻止了我在时间缩放图表上使用uped()
。
我尝试了结合使用< code > destroy()/< code > clear()和< code>render()来解决这个问题,但这导致了< code>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).控制器
未定义。
我试图做的是:
1)在这里渲染一个类似于官方示例的时间刻度折线图:http://www.chartjs.org/samples/latest/scales/time/line-point-data.html
2)通过AJAX检索全新的数据集
3)重新渲染折线图。
似乎< code>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数据结构的方法。
从那以后,只需为适当的事件触发< code > updateTimeScaleChart()即可。
我正在学习如何使用图表.js并且我想要一个图表,该图形以格式为“h?h:mm”在一天中的不同时间(x轴)显示随机值。 在 x 轴中,我想要一个小时的固定步骤,从上午 12 点 (0:00) 开始,到上午 8 点(8:00)结束。 和数据,例如(x=4:45,y=67)在te对应的x刻度(4:00和5:00之间的3/4) 我尝试了以下方法: 但这不是我想要的,因为 X 轴刻度线取标签的值(x 数据)
我用图表js设置了一个折线图。在这张图中,我的点太大了,但这不是我的问题。有太多的点。 有没有办法限制点数? 每5分一分将是一个很好的解决方案。
我想在图表中添加一个新数据,但浏览器在调用我的“add”函数时抛出一个错误,上面写着“UncaughtTypeError:undefined不是一个函数”。 图表对象似乎不识别“AddData”函数,但我不知道如何解决它。在文档中显示此函数对我来说无法正常工作。 .addData(valuesArray,label)在图表实例上调用addData(valuesArray,label),传递每个数据
是寻求帮助的时候了。我已经学习D3.js好几个星期了,现在才开始觉得自己理解了它的10%(哈哈哈)。我正在尝试生成一个非常简单的线图。只要数据非常简单,我就能做到这一点,但是我的原始数据源有UTC时间戳,以及实数/十进制数字,这些数字总是使任何简单之外的东西崩溃。 原始数据源如下所示: 使用jQuery和javascript时间格式化函数,我可以组装以下简化的数据集: 下面是我的代码: 第一个错误
本文向大家介绍使用js获取图片原始尺寸,包括了使用js获取图片原始尺寸的使用技巧和注意事项,需要的朋友参考一下 浏览器中显示的图片大小未必是他真实的高和宽,比如像下面这样,我们给他加上宽和高的样式 <img src="IE.png" style="width:25px;height:25px;"> 这样在浏览器中显示的大小就是25px。那么我们如何获取图片的真实大小呢?,下面的代码就实现了这个
我用图表js设置了一个折线图。 正如你所看到的,我有太多的数据点。有没有办法限制图表本身的点数,或者减少数据?此图的当前形式难以读取,对性能不利。