在Dojo图表中指定饼图的颜色

时间:2014-01-14 17:18:28

标签: dojo dojox.charting

我正在使用Dojo 1.9,使用memoryStore,除了密钥,商店还有4个数据元素。对于4个数据元素中的每一个,我需要绘制一个饼图。工作正常但唯一的问题是我不知道如何指定颜色。

标识符可以是以下之一 - 低,中等,高和极限。 我希望在所有图表中为每个标识符使用相同的颜色。我可以根据标识符的值指定颜色吗?

代码段如下所示:

   var store = new Observable(new Memory({
   data: {
   identifier: "accumulation",
   items: theData
   }

   }));


   theChart.setTheme(PrimaryColors)
    .addPlot("default", {
   type: Pie,
   font: "normal normal 11pt Tahoma",
   fontColor: "black",
   labelOffset: -30,
   radius: 80
   }).addSeries("accumulation", new StoreSeries(store, { query: {  } }, dataElement));

1 个答案:

答案 0 :(得分:1)

我可能在这里误解了你的问题(情节是直接与商店进行交互吗?StoreSeries?),但你要找的是fill属性吗?

// Assuming data is an array of rows retrieved from the store
for(var i etc...) {
    // make chart
    // ...
    chart.addSeries("things", [
        { y: data[i]["low"],  fill: "#55FF55", text: "Low" },
        { y: data[i]["mod"],  fill: "#FFFF00", text: "Moderate" },
        { y: data[i]["high"], fill: "#FFAA00", text: "High" },
        { y: data[i]["extr"], fill: "#FF2200", text: "Extreme" }
    ]);
}

更新:使用StoreSeries时,第三个参数(代码中的dataElement)也可以是一个函数。您可以使用该函数返回一个对象(包含上面的属性,例如fill),而不仅仅是一个值。

chart.addSeries("thingsFromStore", new StoreSeries(store, {}, function(i) { 
    return {
        y   : i[dataElement], 
        text: "Label for " + i.accumulation, 
        fill: getColorForAccumulation(i)
    };    
}));