javascript - Prevent rounding of datetime column in Google graphs X axis -
i have working google chart shows data last 24 hours, 1 data set each hour (ex 01:00 01:59...etc). trying modify make show data last 24 hours in 60 minutes chuncks starting current time (ex 17:20 18:19... etc). code working on (https://jsfiddle.net/70boo2ss/):
google.charts.load('current', {packages: ['corechart', 'bar']}); google.charts.setonloadcallback(drawchart); function drawchart() { var data = new google.visualization.datatable(); data.addcolumn('datetime', 'hours'); data.addcolumn('number', 'col 1'); data.addcolumn('number', 'col 2'); data.addcolumn('number', 'percentage'); data.addrows([ [new date(1454963244*1000),329,35,10.64], [new date(1454959644*1000),17,1,5.88], [new date(1454956044*1000),60,24,40.00], [new date(1454952444*1000),60,24,40.00], [new date(1454948844*1000),60,24,40.00], [new date(1454945244*1000),60,24,40.00], [new date(1454941644*1000),60,24,40.00], [new date(1454938044*1000),60,24,40.00], [new date(1454934444*1000),60,24,40.00], [new date(1454930844*1000),60,24,40.00], [new date(1454927244*1000),60,24,40.00], [new date(1454923644*1000),60,24,40.00], [new date(1454920044*1000),60,24,40.00], [new date(1454916444*1000),60,24,40.00], [new date(1454912844*1000),60,24,40.00], [new date(1454909244*1000),60,24,40.00], [new date(1454905644*1000),60,24,40.00], [new date(1454902044*1000),60,24,40.00], [new date(1454898444*1000),60,24,40.00], [new date(1454894844*1000),60,24,40.00], [new date(1454891244*1000),60,24,40.00], [new date(1454887644*1000),60,24,40.00], [new date(1454884044*1000),60,24,40.00], [new date(1454880444*1000),60,24,40.00], ]); var formatter = new google.visualization.numberformat({ fractiondigits: 2, suffix: '%' }); formatter.format(data, 3); var options = { width: 1600, height: 500, backgroundcolor: '#f1f1f1', colors: ['#ff851b', '#03a9f4', '#8dc859'], chartarea: {top:50, left:50, width: 1500}, haxis: {format: 'h:mma', textstyle: { fontsize: '12' }, gridlines: { count: 24 }}, vaxes:[ { }, { gridlines: { color: 'transparent' }, minvalue: 0, maxvalue: 100, format: '#\'%\'', viewwindowmode : 'explicit', viewwindow:{ max:100, min:0 }}], series:[ {targetaxisindex:0}, {targetaxisindex:0}, {targetaxisindex:1} ] }; var chart = new google.visualization.columnchart(document.getelementbyid('chart')); chart.draw(data, options); } as can see on jsfiddle, graphical data gets offset correct datetime chunks of 60mins, horizontal axis starts @ :00
how make horizontal axis start same graphical representation instead of :00?
you can set own ticks , viewwindow: {min: lowest_date_in_data} haxis.
google.charts.load('current', {packages: ['corechart', 'bar']}); google.charts.setonloadcallback(drawchart); function drawchart() { var data = new google.visualization.datatable(); data.addcolumn('datetime', 'hours'); data.addcolumn('number', 'col 1'); data.addcolumn('number', 'col 2'); data.addcolumn('number', 'percentage'); data.addrows([ [new date(1454963244*1000),329,35,10.64], [new date(1454959644*1000),17,1,5.88], [new date(1454956044*1000),60,24,40.00], [new date(1454952444*1000),60,24,40.00], [new date(1454948844*1000),60,24,40.00], [new date(1454945244*1000),60,24,40.00], [new date(1454941644*1000),60,24,40.00], [new date(1454938044*1000),60,24,40.00], [new date(1454934444*1000),60,24,40.00], [new date(1454930844*1000),60,24,40.00], [new date(1454927244*1000),60,24,40.00], [new date(1454923644*1000),60,24,40.00], [new date(1454920044*1000),60,24,40.00], [new date(1454916444*1000),60,24,40.00], [new date(1454912844*1000),60,24,40.00], [new date(1454909244*1000),60,24,40.00], [new date(1454905644*1000),60,24,40.00], [new date(1454902044*1000),60,24,40.00], [new date(1454898444*1000),60,24,40.00], [new date(1454894844*1000),60,24,40.00], [new date(1454891244*1000),60,24,40.00], [new date(1454887644*1000),60,24,40.00], [new date(1454884044*1000),60,24,40.00], [new date(1454880444*1000),60,24,40.00], ]); // build ticks var ticks = []; (var = 0; < data.getnumberofrows(); i++) { ticks.push(data.getvalue(i, 0)); } var formatter = new google.visualization.numberformat({ fractiondigits: 2, suffix: '%' }); formatter.format(data, 3); var options = { width: 1600, height: 500, backgroundcolor: '#f1f1f1', colors: ['#ff851b', '#03a9f4', '#8dc859'], chartarea: {top:50, left:50, width: 1500}, haxis: { format: 'h:mma', textstyle: { fontsize: '12' }, gridlines: { count: 24 }, ticks: ticks, // set ticks // set min window viewwindow: {min: data.getvalue(data.getnumberofrows() - 1, 0)}}, vaxes:[ { }, { gridlines: { color: 'transparent' }, minvalue: 0, maxvalue: 100, format: '#\'%\'', viewwindowmode : 'explicit', viewwindow:{ max:100, min:0 }}], series:[ {targetaxisindex:0}, {targetaxisindex:0}, {targetaxisindex:1} ] }; var chart = new google.visualization.columnchart(document.getelementbyid('chart')); chart.draw(data, options); } <script src="https://www.gstatic.com/charts/loader.js"></script> <div id="chart"></div>
Comments
Post a Comment