使用angular-chart.js中的chart-dataset-override选项

时间:2016-07-27 11:10:57

标签: chart.js

我正在撰写预算管理申请表,我正在使用angular-chart.js。

我想使用数据集来覆盖初始数据(主要是为了向图表添加新数据并为每个条形图,标签等提供不同的颜色),并根据数据的值设置标签和颜色。 目前,我试图做硬编码,但只有第一个值是覆盖。

这是我正在使用的代码:

angular.module("app2", ["chart.js"]).controller("MixedChartCtrl",
function($scope) {
    $scope.colors = ['#45b7cd', '#ff6384', '#ff8e72'];

    $scope.labels = ['', ''];
    $scope.data = [65, 11];
    $scope.datasetOverride = [

        {
            label: 'Override Series A',
            borderWidth: 1,
            type: 'bar',
            data: [345]
        },
        {
            label: "Bar chart1",
            borderWidth: 1,
            type: 'bar',
            data: [45]
        }

    ];
});

1 个答案:

答案 0 :(得分:3)

希望您的问题是,您希望每个数据(每个条形图)都有填充颜色/标签/内容。

当您有两个数据集时,使用上面(您的)代码段 当必须为所有数据设置相同的属性值时,所有这些数据集属性都将接受 String ,并且当您要设置不同的属性时,它们也将接受 Array [String] 同一数据集中不同数据的值。 (如下所示)。

$scope.data = [65,11];
$scope.datasetOverride = [
{
  label: ['something', 'otherthing'],
  borderWidth: [1,2],
  backgroundColor: ['#FF4242','#2291ff']
}
]

所以现在我明白你可能会动态添加数据 所以你必须将数据推送到 DATASET 这样的东西:

$scope.data.push(345);

因此,如果要为这些设置不同的属性,则需要推送属性(数组)。

$scope.datasetOverride[0][label].push('someother thing');
$scope.datasetOverride[0][borderWidth].push(2);
$scope.datesetOverride[0][backgroundColor].push('#46bfb8');

这将在前一个栏旁边添加一个带有新颜色/标签/等的栏。

我希望我理解你的问题,这会有所帮助。