我在Dojo 1.4中生成一个柱形图,我想根据它代表的与阈值相关的值为各个列着色。例如,如果列的值为5或更小,则应为绿色填充。如果它是10或更多,它应该是红色填充。
我可以在系列级别上获得颜色,但我希望同一系列中的各个数据点具有此变量颜色方案。可以这样做吗?有没有更好的方法来解决这个问题?
以下是我的应用程序到目前为止生成的代码:
var chart1 = new dojox.charting.Chart2D("simplechart");
chart1.addPlot("default", {type: "Columns", gap:5});
chart1.addPlot("target", {type: "Lines"});
chart1.addAxis("x",
{labels: [{value: 1, text: "Aug '12"},
{value: 2, text: "Sep '12"},
{value: 3, text: "Oct '12"},
{value: 4, text: "Nov '12"},
{value: 5, text: "Dec '12"},
{value: 6, text: "Jan '13"}],
minorTicks:false});
chart1.addAxis("y", {vertical: true, min: 0, max: 9});
chart1.addSeries("Data Series", [6.9,7.7,1,5.5,7.6,8.1]);
chart1.addSeries("Target Series", [6,6,6,6,6,6], {plot:"target"});
chart1.render();
我希望“数据系列”中的各个点具有可变颜色值。
答案 0 :(得分:1)
您可以使用“StackedColumns”执行此操作。这个想法是你可以为每种颜色创建一个系列。例如,值为< = 5的“绿色”系列,值>< = 10的“绿色”系列和值> 10的“红色”。
然后,您必须评估数组中包含数据的每个值,并将该值放入相应的系列中,如下所示:
for(var i=0; i<chartData.length;i++){
if(chartData[i]<=5)
fill("green",chartData[i]);
else if(chartData[i]>5 && chartData[i]<=10)
fill("yellow",chartData[i]);
else
fill("red",chartData[i]);
}
请参阅此jsfiddle以查看使用dojo
运行的示例