如果仅存在正值,则从 0 开始的序列图表,但也接受负值

Serial chart which starts from 0 if only positive values are present, but accepts negatives as well

所以基本上我需要一个序列图表,但是如果只输入正数,不管它们有什么值,那么图表将始终显示 0 作为基值,如果有任何负值,然后也显示它们。 如果我对 ValueAxis 使用 "minimum" 属性 并将其设置为零,这会阻止图表显示负数,而 "baseValue" 设置为 0,不会强制图表使用 0始终作为基础,但根据传递的值进行计算。 这是一个例子: http://jsfiddle.net/b3kyos6g/

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

只需将负值更改为正值(去掉 -)

文档可能不清楚 baseValue 的工作原理。 baseValue 用于重新定义 "zero line",表示面积图填充将转到该值,列从该值开始。它与轴的比例或minimum/maximums无关。

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

// 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']);

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