Chart.js |使用“setInterval”刷新折线图时出现问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Chart.js |使用“setInterval”刷新折线图时出现问题相关的知识,希望对你有一定的参考价值。

想知道是否有人可以帮助我。

我无法获得Chart.js LineChart(使用AJAX数据)刷新每个“X”秒。我试图将下面的代码放在setInterval中的函数中,尽管它确实刷新了,但它以“放大”的方式重绘自己...

我希望图表每10秒刷新一次。

码:

        $.ajax({
            type: "POST",
            url: '@Url.Action("ChartRT")',
            contentType: "application/json",
            dataType: "json",
            success:
            function (chartsdata_RT) {
                var aData = chartsdata_RT;
                var aLabels = aData.map(c => c.Period);
                var aDatasets1 = aData.map(c => c.FAILED);
                var aDatasets2 = aData.map(c => c.OTHER);
                var aDatasets3 = aData.map(c => c.DELIVERED);
                var aDatasets4 = aData.map(c => c.PENDING);
                var dataT = {
                    labels: aLabels,
                    datasets: [
                        {
                            label: "FAILED",
                            data: aDatasets1,
                            borderColor: '#ff0000',
                            backgroundColor: "rgba(255, 0, 0, 0.3)",
                            fill: 'true'
                        },
                        {
                            label: "OTHER",
                            data: aDatasets2,
                            borderColor: '#3366ff',
                            backgroundColor: "rgba(32, 162, 219, 0.3)",
                        },
                        {
                            label: "DELIVERED",
                            data: aDatasets3,
                            borderColor: '#009900',
                            backgroundColor: "rgba(0, 102, 0, 0.3)",
                        },
                        {
                            label: "PENDING",
                            data: aDatasets4,
                            borderColor: '#ff9900',
                            backgroundColor: "rgba(255, 153, 219, 0.3)",
                        }

                    ]
                };

                var ctx = $("#chart_last2hours").get(0).getContext("2d");
                ctx.canvas.height = "50";
                var myNewChart = new Chart(ctx, {
                    type: 'line',
                    data: dataT,
                    options: {
                        legend: {
                            display: true,
                            position: 'right',
                            fullWidth: false,
                            labels: {
                                fontColor: '#484848',
                                fontsize: 10,
                                boxWidth: 20,
                                padding: 5,
                                lineWideth: 0
                            }
                        }

                    }

                });
            }



        });
答案

结束了在函数(drawChartRT)中包装上面的代码。然后我:

1)调用函数drawChartRT()来绘制LineChart。

2)在setInterval中删除并添加画布并调用函数drawChartRT()。

    drawChartRT();
    setInterval(function () {
        $("canvas#chart_last2hours").remove();
        $("#chartdiv_rt").append('<canvas id="chart_last2hours" height="200"></canvas>');
        var div = document.getElementById("chart_last2hours");
        //console.log(div);
        drawChartRT();
    }, 10000);

奇迹般有效!

谢谢。何塞

以上是关于Chart.js |使用“setInterval”刷新折线图时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

vue.js 图表chart.js使用

如何使用 Webpack 导入 Chart.js

使用ASP.NET中的Chart.js在ASP.NETVisual数据中使用Chart.js的可视化数据

chart.js使用常见问题

winform cefsharp chart.js 再winform上使用chart.js 绘制动态曲线

使用require.js发出加载chart.js缩放插件的问题