我正在使用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));
答案 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)
};
}));