Hello Damien, Andrews code has worked well for me (I usually have 20 - 2000 series) and I even added buttons to hide/show all series.
I don't have a nice compact test case for you, but will just share snippets of my production code: <!DOCTYPE HTML> <html> <head> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <script type="text/javascript" src="https://www.google.com/jsapi?autoload={'modules':[{'name':'visualization','version':'1','packages':['corechart','table']}]}"></script> <script type="text/javascript"> var data = { ........... }; var charts = {}; var columns = {}; var series = {}; var tables = {}; var options = {}; function createColumn(csv, i) { var d = data[csv]; var c = columns[csv]; var s = series[csv]; // show the column c[i] = i; if (i > 0) { var label = d['cols'][i]['label']; s[i - 1] = (label === 'LSL' || label === 'USL' ? { color: '#999999' } : {}); } } function showColumn(csv, i) { var d = data[csv]; var c = columns[csv]; var s = series[csv]; // show the column c[i] = i; var label = d['cols'][i]['label']; s[i - 1].color = (label === 'LSL' || label === 'USL' ? '#999999' : null); } function hideColumn(csv, i) { var d = data[csv]; var c = columns[csv]; var s = series[csv]; var t = tables[csv]; // hide the column c[i] = { label: '[X] ' + t.getColumnLabel(i), type: t.getColumnType(i), calc: function () { return null; } }; // grey out the legend entry s[i - 1].color = '#CCCCCC'; } function drawCharts() { for (var csv in data) { var d = data[csv]; var c = columns[csv] = []; var s = series[csv] = {}; var t = tables[csv] = new google.visualization.DataTable(d); for (var i = 0; i < t.getNumberOfColumns(); i++) { createColumn(csv, i); } var ps = (d.rows.length <= 2 ? 4 : 0); var o = options[csv] = { title: csv, width: 1000, height: 800, series: s, pointSize: ps, legend: { textStyle: { fontSize: 10 }}, chartArea: { width:"50%" } }; var chartDiv = csv + '_chart'; var chart = charts[csv] = new google.visualization.LineChart(document.getElementById(chartDiv)); chart.draw(t, o); google.visualization.events.addListener(chart, 'select', (function(x) { return function() { var d = data[x]; var c = columns[x]; var s = series[x]; var t = tables[x]; var o = options[x]; var chart = charts[x]; var sel = chart.getSelection(); // if selection length is 0, we deselected an element if (sel.length > 0) { // if row is undefined, we clicked on the legend if (typeof sel[0].row === 'undefined') { var i = sel[0].column; if (c[i] == i) { hideColumn(x, i); } else { showColumn(x, i); } var view = new google.visualization.DataView(t); view.setColumns(c); chart.draw(view, o); } } }; })(csv)); var tabDiv = csv + '_table'; var table = new google.visualization.Table(document.getElementById(tabDiv)); table.draw(t, { width: 1000 }); $('#' + tabDiv).hide(); (function(csv){ $('#' + csv + '_toggle').click(function() { $('#' + csv + '_table').toggle(); }); $('#' + csv + '_all').click(function() { var d = data[csv]; var c = columns[csv]; var s = series[csv]; var t = tables[csv]; var o = options[csv]; var chart = charts[csv]; for (var i = 1; i < t.getNumberOfColumns(); i++) { showColumn(csv, i); } var view = new google.visualization.DataView(t); view.setColumns(c); chart.draw(view, o); }); $('#' + csv + '_none').click(function() { var d = data[csv]; var c = columns[csv]; var s = series[csv]; var t = tables[csv]; var o = options[csv]; var chart = charts[csv]; for (var i = 1; i < t.getNumberOfColumns(); i++) { hideColumn(csv, i); } var view = new google.visualization.DataView(t); view.setColumns(c); chart.draw(view, o); }); })(csv); } } $(function() { google.setOnLoadCallback(drawCharts); }); </script> ........... <div id="GPS_PHASE_NOISE_MODULATION_chart"></div> <input type="button" value="Toggle table" id="GPS_PHASE_NOISE_MODULATION_toggle"> <input type="button" value="Select all" id="GPS_PHASE_NOISE_MODULATION_all"> <input type="button" value="Select none" id="GPS_PHASE_NOISE_MODULATION_none"> <div id="GPS_PHASE_NOISE_MODULATION_table"></div> Regards Alex -- You received this message because you are subscribed to the Google Groups "Google Visualization API" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/google-visualization-api. For more options, visit https://groups.google.com/groups/opt_out.
