重绘时,Chart.js的画布和图表宽度将被覆盖

时间:2019-02-24 12:01:06

标签: javascript html css web chart.js

我用chart.js制作的图表每次重绘时都会增长,我也不知道为什么。 我的图表图表代码为:

let tempChart = document.getElementById("tempChart").getContext('2d');
let pressureChart = document.getElementById("pressureChart").getContext('2d');
let O3Chart = document.getElementById("O3Chart").getContext('2d');
let PM1Chart = document.getElementById("PM1Chart").getContext('2d');
<canvas id="tempChart"></canvas>
<canvas id="pressureChart"></canvas>
<canvas id="O3Chart"></canvas>
<canvas id="PM1Chart"></canvas>

这是我每次要绘制或重绘图表时调用的代码:

function createChart(chartLabels, chartData, chart, label, backgroundcolor, beginAtZero, borderColor) {

    let LineChart = new Chart(chart, {
        type: 'line',
        data: {
            labels: chartLabels,
            datasets: [{
                label: label,
                data: chartData,
                backgroundColor: backgroundcolor,
                pointRadius: 0,
                borderColor: borderColor
        }]
        },
        options: {
            responsive: false,
            scales: {
                yAxes: [{
                        ticks: {
                            beginAtZero: beginAtZero
                        }
                }
                ]
            }
        }
    })

}

运行一次createChart之前,画布的CSS:

    width: 45%;
    padding: 20px 20px;
    border-bottom: 1px solid #dedede;

运行createChart后的CSS:

    display: block;
    height: 341px;
    width: 683px;

我已经用空数组和完整数组测试了我的标签和数据的代码,在这两种情况下,每次调用createChart函数时,图表都会增长。

1 个答案:

答案 0 :(得分:0)

默认情况下,您正在使用的库(chart.js)似乎覆盖了这些CSS值。

一种选择是在createChart函数的末尾将这些值重新设置为正确的值。

例如:

tempChart.style.width = 45%;

其他选择是在样式表!important中为其赋予较高的功能,但这取决于(chart.js)的行为方式。