# 更新图表

在图表创建后更新图表是很常见的。当图表数据或选项发生更改时,Chart.js 会动画到新的数据值和选项。

# 添加或移除数据

通过更改数据数组来支持添加和移除数据。要添加数据,只需将数据添加到数据数组中,如本示例所示,要移除数据,可以再次弹出它。

function addData(chart, label, newData) {
    chart.data.labels.push(label);
    chart.data.datasets.forEach((dataset) => {
        dataset.data.push(newData);
    });
    chart.update();
}
function removeData(chart) {
    chart.data.labels.pop();
    chart.data.datasets.forEach((dataset) => {
        dataset.data.pop();
    });
    chart.update();
}

# 更新选项

要更新选项,支持就地修改 options 属性或传入新的选项对象。

  • 如果就地修改选项,其他选项属性将被保留,包括 Chart.js 计算的那些属性。
  • 如果创建为一个新对象,它将类似于使用这些选项创建新图表 - 旧选项将被丢弃。
function updateConfigByMutating(chart) {
    chart.options.plugins.title.text = 'new title';
    chart.update();
}
function updateConfigAsNewObject(chart) {
    chart.options = {
        responsive: true,
        plugins: {
            title: {
                display: true,
                text: 'Chart.js'
            }
        },
        scales: {
            x: {
                display: true
            },
            y: {
                display: true
            }
        }
    };
    chart.update();
}

可以在不更改其他选项的情况下单独更新比例尺。要更新比例尺,请传入一个包含所有自定义选项的对象,包括未更改的选项。

在使用新的 id 或更改的 type 更新比例尺后,引用 chart.scales 中任何一个的变量将丢失。

function updateScales(chart) {
    let xScale = chart.scales.x;
    let yScale = chart.scales.y;
    chart.options.scales = {
        newId: {
            display: true
        },
        y: {
            display: true,
            type: 'logarithmic'
        }
    };
    chart.update();
    // need to update the reference
    xScale = chart.scales.newId;
    yScale = chart.scales.y;
}

您也可以通过其 id 更新特定的比例尺。

function updateScale(chart) {
    chart.options.scales.y = {
        type: 'logarithmic'
    };
    chart.update();
}

更新选项的代码示例可以在 line-datasets.html (在新窗口中打开) 中找到。

# 阻止动画

有时当图表更新时,您可能不希望出现动画。要实现这一点,您可以使用 'none' 作为模式调用 update

myChart.update('none');
上次更新时间: 2024年5月17日 下午12:33:38