我有一个使用chart.js
的折线图。在这里,我有3个选项来显示他们的数据:所有时间、3个月、1个月。这些都很好用。但问题是,每当用户选择1个月或3个月的数据图并将鼠标光标悬停在图线上时,它就会显示旧数据(所有时间)。
预期结果:图表不再有任何原始数据的痕迹,而是显示新数据,用户可以毫无问题地与之交互。
实际结果:图表显示新数据,但如果用户将鼠标悬停在图表上,它将在原始数据和新数据之间来回闪烁。
这是我的代码:
$.ajax({
url: "some_url_here,
method: "GET",
success: function(data) {
var month = [];
var customers = [];
var data = JSON.parse(data);
var margin = [];
for(var i in data) {
month.push( data[i].time);
customers.push(data[i].profit);
margin.push(data[i].exchnage);
}
var chartdata1 = {
labels: month,
datasets : [
{
label: 'monthly customers for Year 2016',
backgroundColor: 'rgba(255, 99, 132, 0.5)',
borderColor: 'rgb(255, 99, 132)',
data: customers,
lineTension: 0
}
]
};
var frame = $("#"+currcanvas);
var aR = null; //store already returned tick
var ctx = document.getElementById(currcanvas).getContext('2d');
var barGraph1 = new Chart(frame, {
type: 'line',
data: chartdata1,
options: {
scales: {
xAxes: [{
ticks: {
autoSkip: false,
callback: function(e) {
if(e.match(/(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sept|Oct|Nov|Dec).*?\d+/g)!=null){
var tick = e.match(/(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sept|Oct|Nov|Dec).*?\d+/g)[0];
if (tick != aR) {
aR = tick;
return tick;
}
}
}
}
}]
},
responsive: true,
tooltips: {
/* bodyFontColor: "#000000",fontColor: "#000000", //#000000
borderColor: 'rgba(255, 99, 132, 0.5)',
backgroundColor: '#EEEEEE',*/
callbacks: {
afterBody: function(t, d) {
return 'current profit/loss: ' + margin[t[0].index];
}
}
}
}
});
}
});
所以请指导我。我哪里出错了,或者有什么方法可以解决这个问题。谢啦
由于每次用户选择一个选项时,您都在初始化一个新的图表实例,因此您需要在初始化一个新实例之前销毁以前的图表实例。
为此,在初始化图表之前添加以下内容...
// destroy previous instance of chart
barGraph1 && barGraph1.chart && barGraph1.chart.destroy();
// initialize chart
barGraph1 = new Chart(frame, {
type: 'line',
data: chartdata1,
...
注意:确保可全局访问barGraph1
变量
当我在图表上移动鼠标时,如何修复图表js错误,使其显示旧数据。 我的Js文件 我可以在图表js中显示JSON响应中的数据,但当我在图表上移动鼠标时,它的问题显示了以前的值。 我曾试图破坏这种方法,但并没有奏效。如何预防这个问题??。
我有一个天气网站,你可以输入城市的名字,它会显示来自OpenWeatherAPI的天气数据。我也有一个使用Chart.js制作的图表。但是有一个问题,当我搜索其他城市时,图表会更新,但是当我将光标悬停在一些点上时,每次鼠标悬停时,都会突然出现以前的图表,而不是当前的图表。在更新图表之前,我尝试使用update()和destroy()方法,但似乎没有帮助。 我在一个名为chartContainer的
我有一个条形图,每个条形图上都有一个标签。 悬停前: 悬停后: 这是我的代码: 我使用的chartjs版本是2.7.3
我使用Chart.js库绘制条形图,我想显示工具提示不仅在条形图悬停,而且在x轴标签悬停该条形图。我找到了用于配置的方法,但它只允许我访问当前悬停栏的数组,这是没有用的。 那个么,我怎样才能访问鼠标事件,并从那个里获取位置,将其与条形标签的位置进行比较呢?还是有别的办法? 我当前的配置: 它只打印出悬停条数据,但我坚持要想出如何扩展它以满足我需要的行为。
我认为我的问题是一个已知的问题,每次我制作一个新的图表,并将鼠标悬停在画布上的一些点上,旧的图表总是会闪进闪出。这是我试图修复它的一个线程,但似乎没有任何效果。我试图重新添加画布,使用破坏,清除,如果语句应该清除它,但什么都没有。 这是我的代码: 我尝试添加
问题内容: 我有一张图片: 然后,我将其显示在屏幕上: 如何检测鼠标是否在触摸图像? 问题答案: 使用获得描述你的边界,然后使用来检查,如果鼠标光标这里面。 例: