2017-01-11 200 views
2

我正在使用canvasjs制作饼图。我在我的自定义代码中使用它,我从XML文件中获取服务器的响应,然后使用它来填充图表值。我的问题是,即使对于不同的标签,颜色在整个饼图中保持不变,我也无法更改图表的颜色。饼图颜色不变

我用调试器也在哪里它的颜色值正在改变,但我仍然无法解决它。

color: scopes.chart_color_value[i] 

我正在使用另一个配置文件,我存储颜色值。

这里是我的自定义代码

$scope.loadChartValue = function (data, scopes) { 
    scopes.data_id = []; 
    scopes.legend_text = ""; 
    scopes.inner_chart_data = []; 

    for (var i = 0; i <= data.length; i++) { 
     var arrayvalue = data[0].data[i]._attr 
     if (existsInArray(scopes.data_id, arrayvalue.label._value) == false) { 
      scopes.data_id.push(arrayvalue.label._value); 
     } 
    } 
     scopes.inner_chart_data = []; 
     var i=1; 
     for (var j = 0; j < data[0].data.length; j++) { 
      scopes.inner_chart_data.push({ label: data[0].data[j]._attr.label._value, y: data[0].data[j]._attr.value._value }); 

     scopes.dataset.push(
        { 
         type: "pie", 

         markerType: "circle", 
         markerSize: scopes.markersize, 
         color: scopes.chart_color_value[i], 
         showInLegend: false, 
         name: scopes.legend_text, 
         dataPoints: scopes.inner_chart_data 
        } 
      ); 
      i++; 
     } 

} 

It is coming like this

+0

你能告诉你如何初始化scopes.chart_color_value吗? –

+0

@PawełReszka它正在通过示波器。我们可以通过作用域 – shv22

回答

0

似乎要创建2数据系列,而不是1数据系列2倍的数据点。当颜色设置为数据级别时,整个饼图变为单色,所以请尝试在数据点级别更改它。

以下代码应该可以正常工作。

for (var j = 0; j < data[0].data.length; j++) { 
    scopes.inner_chart_data.push({ label: data[0].data[j]._attr.label._value, y: data[0].data[j]._attr.value._value, color: scopes.chart_color_value[i], }); 
    i++; 
} 
scopes.dataset.push(
    { 
     type: "pie", 
     markerType: "circle", 
     markerSize: scopes.markersize,      
     showInLegend: false, 
     name: scopes.legend_text, 
     dataPoints: scopes.inner_chart_data 
    } 
); 
+0

来访问任何声明的变量......无论如何,我都明白,感谢您的帮助 – shv22