Amchart不显示值= 0的数据

时间:2017-06-07 07:45:43

标签: javascript amcharts

我在图表中工作,数据来自服务器,如Object&#39。

我不需要在我的图表中显示一些数据,其中数字= 0,我想知道amchart是否有一些功能不显示这个。

以下是代码示例:

  <form method="post" class="login-form" enctype="multipart/form-data" 
     action="my.php">

在这种情况下,我不想显示数组的最后一项,因为数字为0,我不应该为原因项目创建一个新数组。 提前致谢

1 个答案:

答案 0 :(得分:0)

如果没有因为折线图的子弹而修改数组,那么在值为0时不显示图形对象是非常不可能的(您可以使用alphaField隐藏列,但是您无法删除子弹)。您可以编写一个初始化处理程序,该处理程序将零值清空,以便图表在图表初始化时根本不显示点或列:

//Nulls out any field that contains a zero, effectively hiding the point/column from the chart.
//Note that the category will still be visible if both points are null unless you null out that category as well.
AmCharts.addInitHandler(function(chart) { 
  var valueFields = chart.graphs.map(function(graph) {
    return graph.valueField;
  });
  chart.dataProvider.forEach(function(dataItem) {
    valueFields.forEach(function(valueField) {
      if (dataItem[valueField] === 0) {
        dataItem[valueField] = null;
      }
    })
  })
}, ["serial"]);

请注意,这也会影响数据导出(csv,xlsx,json)。如果要将这些零值重新添加到数据导出中,可以使用导出插件中的processData回调来修改数据以重新添加零:

"export": {
    "enabled": true,
     //re-add nulled out values as zeroes for data export:
    "processData": function(data, cfg) {
      var valueFields = this.setup.chart.graphs.map(function(graph) {
        return graph.valueField;
      });
      data.forEach(function(dataItem) {
        valueFields.forEach(function(valueField) {
          if (dataItem[valueField] == null) {
            dataItem[valueField] = 0;
          }
        });
      });
      return data;
    }
 }

Demo