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

将光标悬停在chart.js中的图表上时,会显示具有以前数据的图表

邓业
2023-03-14

我有一个天气网站,你可以输入城市的名字,它会显示来自OpenWeatherAPI的天气数据。我也有一个使用Chart.js制作的图表。但是有一个问题,当我搜索其他城市时,图表会更新,但是当我将光标悬停在一些点上时,每次鼠标悬停时,都会突然出现以前的图表,而不是当前的图表。在更新图表之前,我尝试使用update()和destroy()方法,但似乎没有帮助。

我在一个名为chartContainer的div中有一个canvas对象,它是chartcontiner div的唯一子对象。

var ctx = document.getElementById("myChart");
var myChart = new Chart(ctx, {
    type: 'line',
    data: {
        labels: arrayDates,
        datasets: [
            {
                borderColor: '#69CDE6',
                backgroundColor: 'rgba(12, 176, 216, 0.1)',
                data: arrayTemps
            }
        ]
    },
    options:{
        title: {
            display: true,
            text: `Prognoza pogody dla ${citynCountry}`,
            fontSize: 16,
            fontStyle: 'bold'
        },
        legend: {
            display: false,
        },
        scales:{
            yAxes:[{
                display: true,
                scaleLabel: {
                    display: true,
                    labelString: 'Temperatura w °C',
                    fontSize: 16
                },
                ticks: {
                    fontSize: 17
                }
            }],
            xAxes:[{
                display: true,
                scaleLabel: {
                    display: true,
                    labelString: 'Data i godzina',
                    fontSize: 16
                },
                ticks: {
                    fontSize: 17
                }
            }]

        }
    }

});
myChart.update();

共有1个答案

章彬郁
2023-03-14

看起来好像每次数据改变时,你都在同一个< code >画布中创建新的图表。您最好只创建一次图表,然后在其他城市的数据可用时更新其< code>data.labels 、< code>data.datasets.data和< code>options.title。更新完所有< code >数据和< code >选项后,您需要调用< code>myChart.update()。

请查看以下涉及类似问题的答案:

  • https://stackoverflow.com/a/61025107/2358409
  • https://stackoverflow.com/a/61576710/2358409
 类似资料:
  • 我有一个使用的折线图。在这里,我有3个选项来显示他们的数据:所有时间、3个月、1个月。这些都很好用。但问题是,每当用户选择1个月或3个月的数据图并将鼠标光标悬停在图线上时,它就会显示旧数据(所有时间)。 预期结果:图表不再有任何原始数据的痕迹,而是显示新数据,用户可以毫无问题地与之交互。 实际结果:图表显示新数据,但如果用户将鼠标悬停在图表上,它将在原始数据和新数据之间来回闪烁。 这是我的代码:

  • 我有一个条形图,每个条形图上都有一个标签。 悬停前: 悬停后: 这是我的代码: 我使用的chartjs版本是2.7.3

  • 我使用Chart.js库绘制条形图,我想显示工具提示不仅在条形图悬停,而且在x轴标签悬停该条形图。我找到了用于配置的方法,但它只允许我访问当前悬停栏的数组,这是没有用的。 那个么,我怎样才能访问鼠标事件,并从那个里获取位置,将其与条形标签的位置进行比较呢?还是有别的办法? 我当前的配置: 它只打印出悬停条数据,但我坚持要想出如何扩展它以满足我需要的行为。

  • 我想绘制INS的收盘价如下,它的工作原理。然后我想在图形上悬停时添加光标。我跟随https://matplotlib.org/3.1.0/gallery/misc/cursor_demo_sgskip.html的演示,这就是我想要的。 但当我将这些行添加到代码中时,它显示值错误。最初我使用历元时间作为x轴,我认为这就是问题所在,所以我将历元时间转换为日期时间,但它仍然不起作用,并且什么也没有绘制。

  • 我认为我的问题是一个已知的问题,每次我制作一个新的图表,并将鼠标悬停在画布上的一些点上,旧的图表总是会闪进闪出。这是我试图修复它的一个线程,但似乎没有任何效果。我试图重新添加画布,使用破坏,清除,如果语句应该清除它,但什么都没有。 这是我的代码: 我尝试添加

  • 当我在图表上移动鼠标时,如何修复图表js错误,使其显示旧数据。 我的Js文件 我可以在图表js中显示JSON响应中的数据,但当我在图表上移动鼠标时,它的问题显示了以前的值。 我曾试图破坏这种方法,但并没有奏效。如何预防这个问题??。