我正在使用 AngularJS 和 Flot 绘制条形图:
见 jsFiddle:http: //jsfiddle.net/juliejones/DwMwJ/3/
指令:
App.directive('barChart', function(){
return{
restrict: 'E',
link: function(scope, elem, attrs){
var weekday=new Array();
weekday[0]="Su";
weekday[1]="Mo";
weekday[2]="Tu";
weekday[3]="We";
weekday[4]="Th";
weekday[5]="Fr";
weekday[6]="Sa";
var options = {
bars: {
show: true,
barWidth: 1000 * 60 * 60 * 24 * 0.7,
align: 'center'
},
colors: ["#F90"],
xaxis: {
mode: 'time',
tickSize: [1, 'day'],
minTickSize: [1, 'day'],
tickFormatter: function (val, axis) {
var d = new Date(val);
return weekday[d.getUTCDay()] + '<br />' + d.getUTCDate();
}
},
yaxis: {
minTickSize: 1,
tickDecimals: 0,
min: 0
}
};
var chart = null;
scope.$watch(attrs.ngModel, function(v){
if(!chart){
chart = $.plot(elem, v , options);
elem.show();
}else{
chart.setData(v);
chart.setupGrid();
chart.draw();
}
});
}
};
});
数据(除第一项的值外相同):
var data1 = [[
[1364774400000, ],
[1365206400000, 5],
[1365292800000, 2],
[1365379200000, 2]
]];
var data2 = [[
[1364774400000, 0],
[1365206400000, 5],
[1365292800000, 2],
[1365379200000, 2]
]];
只要第一个数据点具有空值,图表看起来就很好。3 个条形图完全以它们的刻度为中心。请参阅 jsFiddle。
单击“更改数据”按钮以加载在第一个数据点中具有零值的第二组数据。这三个条移动,因此它们不再居中,并且现在离它们应该在 x 轴上的位置不远了。
为什么在使用第二组数据时,条形图没有以正确的报价为中心?我该如何纠正呢?
编辑:当不涉及 AngularJS 时,这对我来说非常有效。见 jsFiddle:http: //jsfiddle.net/juliejones/fC3zs/1/
提前致谢!