串行图表,如果仅存在正值,则从0开始,但也接受负数

时间:2017-07-21 11:36:44

标签: javascript amcharts

所以基本上我需要一个连续图表,但是如果只输入正数,没有任何值,那么图表将始终显示0作为基值,如果有任何负值,则显示它们同样。 如果我使用ValueAxis的“minimum”属性并将其设置为零,则可以防止图表显示底片,而“baseValue”设置为0时,不会强制图表始终使用0作为基础,但是根据传递的值进行计算。 这是一个例子: http://jsfiddle.net/b3kyos6g/

"valueAxes": [{
  "position": "left",
  "title": "Visitors",
  "baseValue": 0,
}],

只需将负值更改为正值(删除 - )

1 个答案:

答案 0 :(得分:0)

文档可能并不清楚baseValue的工作原理。 // Mini plugin to force a zero minimum on the first value axis if all values // are non-negative. Can be extended to support multiple value axes if needed. AmCharts.addInitHandler(function(chart) { //get all value fields if there are multiple graphs var valueFields = chart.graphs.map(function(graph) { return graph.valueField; }); //find out if there are any negative values in the dataProvider for any graph. var containsNegatives = chart.dataProvider.some(function(dataItem) { return valueFields.some(function(valueField) { return dataItem[valueField] < 0; }); }); //only set the value axis minimum to 0 if there are no negatives. if (!containsNegatives) { chart.valueAxes[0].minimum = 0; chart.validateData(); } }, ['serial']); 用于重新定义&#34;零线&#34;,表示区域图填充将转到该值,列从该值开始。它与轴的比例或最小/最大值无关。

如果您的值都是正值,要使图表自动从零开始,您可以使用AmCharts.addInitHandler编写一个迷你插件来检查数据值并在图表之前设置适当的最小值初始化,如下:

YEAR

这里的an updated fiddle使用两个图表演示了这一点。