我正在尝试使用StockChart获取多线图。首先我尝试没有专门设置颜色属性,但我得到的线都是橙色。因此,我尝试使用StockPanel类中的“colors”数组强制图形具有不同的颜色。这适用于设置legendColor但在设置线条颜色时失败。
我做了什么傻事吗?如何触发颜色自动分配?
这是我的代码:
var stockPanel1 = new AmCharts.StockPanel();
stockPanel1.showCategoryAxis = true;
var graph1;
$.each($("#building-select").val(), function(index, value) {
graph1 = new AmCharts.StockGraph();
graph1.valueField = buildingNames[value];
graph1.legendColor = stockPanel1.colors[index]; // this works
graph1.lineColor = stockPanel1.colors[index]; // this does not work
graph1.title = buildingNames[value];
graph1.bulletBorderColor = "#FFFFFF";
graph1.bulletBorderAlpha = 1;
graph1.balloonText = buildingNames[value] + ":<b>$[[value]]</b>";
stockPanel1.addStockGraph(graph1);
});
这是我从代码中得到的。请注意,相应地设置了图例颜色,但线条颜色仍为橙色。
更新
我用JSON格式替换了创建代码,添加了“useDataSetColors:false”配置。它适用于初始行。
stockGraphs: [{
id: "g1",
valueField: $("#type-select").val(),
comparable: true,
useDataSetColors: false,
lineColor: Colors[0], // this works
compareField: $("#type-select").val(),
balloonText: "[[title]]:<b>$[[value]]</b>",
compareGraphBalloonText: "[[title]]:<b>$[[value]]</b>"
}]
对于正在进行的添加行,我直接将颜色属性分配给数据集:
$.each($(this).val(), function(index, value) {
chartDataSets[value].color = Colors[index];
if (index == 0) {
chart.mainDataSet = chartDataSets[value];
} else {
chartDataSets[value].compared = true;
}
});
我想这只是一些解决方法,如果有更好的方法,请告诉我,非常感谢。
另外,如何添加轴标签并将图例重新定位到底部?适用于常规amCharts的配置似乎不适用于StockCharts。
答案 0 :(得分:3)
尝试设置graph.useDataSetColors = false;