添加DataSet条形图 - Chart.JS

时间:2016-09-13 17:33:29

标签: dataset bar-chart chart.js

我试着在chart.js中创建一个条形图(使用chart.js 2.2.2)

我在尝试将新数据集放入图表时遇到了麻烦

如何使用数据添加新的数据集“Vendas”:[10,20,30,40,50,60,70]

var data = {
        labels: ["January", "February", "March", "April", "May", "June", "July"],
        datasets: [
            {
                label: "Compras",
                backgroundColor: [
                    'rgba(255, 99, 132, 0.2)',
                    'rgba(54, 162, 235, 0.2)',
                    'rgba(255, 206, 86, 0.2)',
                    'rgba(75, 192, 192, 0.2)',
                    'rgba(153, 102, 255, 0.2)',
                    'rgba(255, 159, 64, 0.2)'
                ],
                borderColor: [
                    'rgba(255,99,132,1)',
                    'rgba(54, 162, 235, 1)',
                    'rgba(255, 206, 86, 1)',
                    'rgba(75, 192, 192, 1)',
                    'rgba(153, 102, 255, 1)',
                    'rgba(255, 159, 64, 1)'
                ],
                borderWidth: 1,
                data: [65, 59, 80, 81, 56, 55, 40],
            }
        ]
    };
var ctx = $("#barOrgaoAno").get(0).getContext("2d");
        var myBarChart = new Chart(ctx,{
            type: "bar",
            data: data,
});

我尝试了两个我在互联网上的例子,但我无法工作

例1

barChartDemo.addData([dData()], "dD " + index);

Exemple2

JSFLiddle

var myNewDataset = {
        label: "My Second dataset",
        fillColor: "rgba(187,205,151,0.5)",
        strokeColor: "rgba(187,205,151,0.8)",
        highlightFill: "rgba(187,205,151,0.75)",
        highlightStroke: "rgba(187,205,151,1)",
        data: [48, 40, 19, 86, 27, 90, 28]
    }

    var bars = []
    myNewDataset.data.forEach(function (value, i) {
        bars.push(new myBarChart.BarClass({
            value: value,
            label: myBarChart.datasets[0].bars[i].label,
            x: myBarChart.scale.calculateBarX(myBarChart.datasets.length + 1, myBarChart.datasets.length, i),
            y: myBarChart.scale.endPoint,
            width: myBarChart.scale.calculateBarWidth(myBarChart.datasets.length + 1),
            base: myBarChart.scale.endPoint,
            strokeColor: myNewDataset.strokeColor,
            fillColor: myNewDataset.fillColor
        }))
    })

    myBarChart.datasets.push({
        bars: bars
    })

    myBarChart.update();

2 个答案:

答案 0 :(得分:14)

由于您将图表数据存储在变量中(在代码中称为data),您可以使用按钮上的简单函数来执行此操作:

$('button').click(function() {
    // You create the new dataset `Vendas` with new data and color to differentiate
    var newDataset = {
        label: "Vendas",
        backgroundColor: 'rgba(99, 255, 132, 0.2)',
        borderColor: 'rgba(99, 255, 132, 1)',
        borderWidth: 1,
        data: [10, 20, 30, 40, 50, 60, 70],
    }

    // You add the newly created dataset to the list of `data`
    data.datasets.push(newDataset);

    // You update the chart to take into account the new dataset
    myBarChart.update();
});

<小时/> 您可以看到完整的代码on this jsFiddle,点击后会显示结果:

enter image description here

答案 1 :(得分:0)

仅基于tektiv回答,对我不起作用。 我按照他的建议构造了newDataSet,但是在推送数据时遇到了问题。 要解决这个问题,我必须做:

data.config.data.datasets.push(newDataSet);

代替:

data.datasets.push(newDataSet);