-for( var i in data.x_data ) {
- var x = Math.ceil( ( data.x_data[i] - data.min_x ) / data.x_range * data.width );
- var y = Math.ceil( ( data.y_data[i] - data.min_y ) / data.y_range * data.height );
-// console.debug( i, x, y );
- ctx.lineTo( x, -y );
- data.x_px.push( x );
+var elements = data.x.data.length;
+var step = elements / data.width;
+console.debug( elements, step );
+if ( step < 1 ) step = 1;
+var i_float = 0;
+while( i_float < elements ) {
+ var i = i_float.toFixed();
+ var x = data.x.data[i];
+ if ( data.numeric ) x = Math.ceil( ( x - data.x.min ) / data.x.range * data.width );
+ var y = Math.ceil( ( data.y.data[i] - data.y.min ) / data.y.range * data.height );
+ if ( data.numeric ) {
+ ctx.lineTo( x, -y );
+ data.x.px.push( x );
+ } else {
+ var x_px = i * data.x.inc_bar;
+// console.debug( x_px, y );
+ ctx.fillRect( x_px, 0, data.x.inc_bar, -y );
+ ctx.strokeRect( x_px, 0, data.x.inc_bar, -y );
+ }
+ i_float += step;