I'm looking to control hidden value in amCharts line graph options so I could hide and show graphs using some other control like radiobutton or dropdownlist.
Link to amChart - htps://www.amcharts.com/dataviz-tip-12-show-four-lines-line-chart/
I am trying to set value of "hidden" which is either true or false under graphs option using javascript.
you can build the AmCharts "graphs"
property dynamically in an array,
then use the array within makeChart
see following working snippet,
checkboxes are used to toggle each graph / series.
the chart is drawn on the 'change'
event of each checkbox.
then the "graphs"
are built, using hidden
, based on the checkbox checked
property.
window.addEventListener('load', function () {
// get checkboxes, add change event listener
var checkboxes = document.getElementsByName('graph');
Array.prototype.forEach.call(checkboxes, function(checkbox) {
checkbox.addEventListener('change', drawChart);
});
// draw chart
drawChart();
function drawChart() {
// build graphs
var graphs = [];
Array.prototype.forEach.call(checkboxes, function(checkbox) {
graphs.push({
"type": "line",
"title": checkbox.value,
"valueField": checkbox.value,
hidden: !checkbox.checked
});
});
// make chart
var chart = AmCharts.makeChart("chart_div", {
"type": "serial",
"theme": "light",
"dataProvider": [
{"Date":"1/1/2017","Index I":13.80,"Index II":11.27,"Index III":8.75,"Index IV":12.30,"Index V":10.60,"Index VI":14.42},
{"Date":"2/1/2017","Index I":15.49,"Index II":14.05,"Index III":6.26,"Index IV":13.37,"Index V":9.25,"Index VI":18.92},
{"Date":"3/1/2017","Index I":16.51,"Index II":18.77,"Index III":3.22,"Index IV":18.02,"Index V":11.02,"Index VI":24.78},
{"Date":"4/1/2017","Index I":20.36,"Index II":22.35,"Index III":4.74,"Index IV":22.93,"Index V":7.69,"Index VI":20.99},
{"Date":"5/1/2017","Index I":25.64,"Index II":24.02,"Index III":1.09,"Index IV":19.08,"Index V":13.39,"Index VI":25.43},
{"Date":"6/1/2017","Index I":22.21,"Index II":21.83,"Index III":6.15,"Index IV":23.07,"Index V":16.72,"Index VI":23.14},
{"Date":"7/1/2017","Index I":18.81,"Index II":23.23,"Index III":5.21,"Index IV":19.67,"Index V":13.97,"Index VI":25.71},
{"Date":"8/1/2017","Index I":21.98,"Index II":19.23,"Index III":11.10,"Index IV":17.73,"Index V":14.70,"Index VI":31.29},
{"Date":"9/1/2017","Index I":18.10,"Index II":25.12,"Index III":7.33,"Index IV":19.89,"Index V":20.07,"Index VI":36.57},
{"Date":"10/1/2017","Index I":18.30,"Index II":25.56,"Index III":13.22,"Index IV":17.05,"Index V":16.68,"Index VI":39.10},
{"Date":"11/1/2017","Index I":22.17,"Index II":25.02,"Index III":16.85,"Index IV":15.03,"Index V":19.65,"Index VI":43.62},
{"Date":"12/1/2017","Index I":22.74,"Index II":25.02,"Index III":18.35,"Index IV":12.48,"Index V":24.32,"Index VI":43.62}
],
"graphs": graphs, // <-- add graphs array here
"categoryField": "Date",
"legend": {}
});
}
});
label {
cursor: pointer;
}
.select {
white-space: nowrap
}
#chart_div {
height: 260px;
}
<script src="//www.amcharts.com/lib/3/amcharts.js"></script>
<script src="//www.amcharts.com/lib/3/serial.js"></script>
<script src="//www.amcharts.com/lib/3/themes/light.js"></script>
<div>Select Graphs</div>
<div class="select">
<input type="checkbox" name="graph" id="graph-0" value="Index I" checked />
<label for="graph-0">Index I</label>
<span>|</span>
<input type="checkbox" name="graph" id="graph-1" value="Index II" checked />
<label for="graph-1">Index II</label>
<span>|</span>
<input type="checkbox" name="graph" id="graph-2" value="Index III" checked />
<label for="graph-2">Index III</label>
<span>|</span>
<input type="checkbox" name="graph" id="graph-3" value="Index IV" />
<label for="graph-3">Index IV</label>
<span>|</span>
<input type="checkbox" name="graph" id="graph-4" value="Index V" checked />
<label for="graph-4">Index V</label>
<span>|</span>
<input type="checkbox" name="graph" id="graph-5" value="Index VI" />
<label for="graph-5">Index VI</label>
</div>
<div id="chart_div"></div>