<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ZingGrid Demo</title> <script nonce="undefined" src="https://cdnjs.cloudflare.com/ajax/libs/PapaParse/4.4.0/papaparse.min.js"></script> <script nonce="undefined" src="https://cdn.zingchart.com/zingchart.min.js"></script> <style> html, body { height: 100%; width: 100%; margin: 0; padding: 0; } .caption-container { display: flex; justify-content: space-between; flex-wrap: wrap; align-items: baseline; } .chart--container { min-height: 150px; width: 100%; height: 500px; } .zc-ref { display: none; } </style> </head> <body> <h1>Lets Connect a Chart to a CSV on the Client</h1> <p>In this example we will use the <a href="https://www.papaparse.com/docs#json-to-csv">papaparse</a> library.</p> <!-- CHART CONTAINER --> <div id="myChart" class="chart--container"> <a class="zc-ref" href="https://www.zingchart.com/">Powered by ZingChart</a> </div> <script> ZC.LICENSE = ["569d52cefae586f634c54f86dc99e6a9", "b55b025e438fa8a98e32482b5f768ff5"]; // window:load event for Javascript to run after HTML // because this Javascript is injected into the document head window.addEventListener('load', () => { // Javascript code to execute after DOM content // full ZingChart schema can be found here: // https://www.zingchart.com/docs/api/json-configuration/ let chartConfig = { type: 'line', globals: { fontSize: '14px' }, title: { text: 'Movie Information', fontSize: '24px', adjustLayout: true, }, legend: { cursor: 'hand', }, plotarea: { margin: 'dynamic' }, plot: { }, scaleX: { zooming: true, label: { text: 'years' }, }, scaleY: { format: '$%v', short: true, label: { text: 'USD' } }, crosshairX: { plotLabel: { short: true, decimals: 2, } }, noData: { text: 'Fetching data from CSV file...' }, series: [{ text: 'Budget', // plot values values: [], }, { text: 'Domestic Growth', // plot values values: [], }, { text: 'Internation Growth', // plot values values: [], } ] }; // render chart with width and height to // fill the parent container CSS dimensions zingchart.render({ id: 'myChart', data: chartConfig, height: '100%', width: '100%' }); // Parse local CSV file Papa.parse('https://raw.githubusercontent.com/fivethirtyeight/data/master/bechdel/movies.csv', { download: true, // url to retrieve CSV file complete: function(results) { let seriesValues = [ [], // budget [], // domestic growth [] // international growth ]; // if results came in correctly if (results && results.data) { // lets push the results into our new array // new format. Row [0] is the column headers for (let i = 1; i < results.data.length; i++) { let budgetValue = Number(results.data[i][6]) || null; let domesticValue = Number(results.data[i][7]) || null; let internationalValue = Number(results.data[i][8]) || null; // budget data stored in column 6 seriesValues[0].push(budgetValue); // domestic growth stored in column 7 seriesValues[1].push(domesticValue); // international growth stored in column 8 seriesValues[2].push(internationalValue); } // render data zingchart.exec('myChart', 'setseriesvalues', { values: seriesValues }); } } }); }); </script> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ZingGrid Demo</title> <script src="https://cdnjs.cloudflare.com/ajax/libs/PapaParse/4.4.0/papaparse.min.js"></script> <script src="https://cdn.zingchart.com/zingchart.min.js"></script> </head> <body> <h1>Lets Connect a Chart to a CSV on the Client</h1> <p>In this example we will use the <a href="https://www.papaparse.com/docs#json-to-csv">papaparse</a> library.</p> <!-- CHART CONTAINER --> <div id="myChart" class="chart--container"> <a class="zc-ref" href="https://www.zingchart.com/">Powered by ZingChart</a> </div> </body> </html>
html, body { height: 100%; width: 100%; margin: 0; padding: 0; } .caption-container { display: flex; justify-content: space-between; flex-wrap: wrap; align-items: baseline; } .chart--container { min-height: 150px; width: 100%; height: 500px; } .zc-ref { display: none; }
// window:load event for Javascript to run after HTML // because this Javascript is injected into the document head window.addEventListener('load', () => { // Javascript code to execute after DOM content // full ZingChart schema can be found here: // https://www.zingchart.com/docs/api/json-configuration/ let chartConfig = { type: 'line', globals: { fontSize: '14px' }, title: { text: 'Movie Information', fontSize: '24px', adjustLayout: true, }, legend: { cursor: 'hand', }, plotarea: { margin: 'dynamic' }, plot: { }, scaleX: { zooming: true, label: { text: 'years' }, }, scaleY: { format: '$%v', short: true, label: { text: 'USD' } }, crosshairX: { plotLabel: { short: true, decimals: 2, } }, noData: { text: 'Fetching data from CSV file...' }, series: [{ text: 'Budget', // plot values values: [], }, { text: 'Domestic Growth', // plot values values: [], }, { text: 'Internation Growth', // plot values values: [], } ] }; // render chart with width and height to // fill the parent container CSS dimensions zingchart.render({ id: 'myChart', data: chartConfig, height: '100%', width: '100%' }); // Parse local CSV file Papa.parse('https://raw.githubusercontent.com/fivethirtyeight/data/master/bechdel/movies.csv', { download: true, // url to retrieve CSV file complete: function(results) { let seriesValues = [ [], // budget [], // domestic growth [] // international growth ]; // if results came in correctly if (results && results.data) { // lets push the results into our new array // new format. Row [0] is the column headers for (let i = 1; i < results.data.length; i++) { let budgetValue = Number(results.data[i][6]) || null; let domesticValue = Number(results.data[i][7]) || null; let internationalValue = Number(results.data[i][8]) || null; // budget data stored in column 6 seriesValues[0].push(budgetValue); // domestic growth stored in column 7 seriesValues[1].push(domesticValue); // international growth stored in column 8 seriesValues[2].push(internationalValue); } // render data zingchart.exec('myChart', 'setseriesvalues', { values: seriesValues }); } } }); });