2017-06-07 5 views
0

データがオブジェクトの配列のようなサーバーからのものであるグラフで作業しています。Amchart値が0のデータを表示しない

私のグラフに表示するデータは必要ありません。数値は0のデータです。私はamchartにこれを表示しない機能があるかどうかを知りたいと思っています。私は数が0であるので、私は理由のプロジェクトのための新しい配列を作成するはずの、配列の最後の項目を表示したくない。この場合

var data =[ 
{'number':1, 'date':'11:00-11:59', 'duration': 3}, 
{'number':2, 'date':'12:00-12:59', 'duration':6}, 
{'number':4, 'date':'13:00-13:59', 'duration':12}, 
{'number':8, 'date':'14:00-14:59', 'duration':8}, 
{'number':0, 'date':'14:00-14:59', 'duration':0} 
]; 

var chart = AmCharts.makeChart("chartdiv", { 
"theme": "light", 
"type": "serial", 
"startDuration": 2, 
"dataProvider": data, 
"valueAxes": [{ 
    "id": "number", 
    "position": "left", 
    "title": "N Llamadas" 
},{ 
    "id": "durationAxis", 
    "position": "right", 
    "title": "duration" 
}], 
"graphs": [{ 
    "balloonText": "[[category]]: <b>[[value]]</b>", 
    "fillColorsField": "color", 
    "fillAlphas": 1, 
    "lineAlpha": 0.1, 
    "type": "column", 
    "valueField": "number" 
},{ 
    "bullet": "square", 
    "bulletBorderAlpha": 1, 
    "bulletBorderThickness": 1, 
    "dashLengthField": "dashLength", 
    "legendValueText": "[[value]]", 
    "title": "duration", 
    "fillAlphas": 0, 
    "valueField": "duration", 
    "valueAxis": "durationAxis" 
}], 
"depth3D": 20, 
"angle": 30, 
"chartCursor": { 
    "categoryBalloonEnabled": false, 
    "cursorAlpha": 0, 
    "zoomable": false 
}, 
"categoryField": "date", 
"categoryAxis": { 
    "gridPosition": "start", 
    "labelRotation": 0 
}, 
"export": { 
    "enabled": true 
} 

}); 

:ここ

はコードの例です。 ありがとうございます

+0

意味するか:あなたはデータのエクスポートにそれらのゼロ値を再度追加したい場合は、再度追加のゼロをするためにあなたのデータを修正するために、エクスポートプラグインでprocessDataコールバックを使用することができますその特定の列のバルーンを無効にしたいのですか? – xorspark

+0

number = 0の場合よりもグラフにはそのオブジェクトの何も表示されません@xorspark – CorreiaD

答えて

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に影響することを注意:チャートは、チャートの初期化時にすべてのポイントまたは列を表示しないように、ゼロ値をゼロにする初期化ハンドラを書くことができます) 同じように。あなたは

"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

関連する問題