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

Popular posts from this blog

java - pagination of xlsx file to XSSFworkbook using apache POI -

Unlimited choices in BASH case statement -

apache - How do I stop my index.php being run twice for every user -