我在我的项目中使用多系列条形图,除了图形的显示样式外,一切看起来都很好,而不是并排显示每个系列,它显示为堆叠条形图的行为..i使用了这种方法..
<script type="text/javascript">
$(document).ready(function () {
var ms_data = [{"label":"FOO","data":[[0,80],[1,70],[2,100],[3,60],[4,102]]},
{"label":"BAR","data":[[0,10],[1,20],[2,30],[3,40],[4,80]]},
{"label":"CAR","data":[[0,5],[1,10],[2,15],[3,20],[4,25]]}]
var ms_ticks = [[0,"sample5"],[1,"sample4"],[2,"sample3"],[3,"sample2"],[4,"sample1"]];
function plotWithOptions() {
$.plot($("#placeholder"), ms_data, {
bars: { show: true, barWidth: 0.6, series_spread: true, align: "center" },
xaxis: { ticks: ms_ticks, autoscaleMargin: .10 },
grid: { hoverable: true, clickable: true }
});
}
function showTooltip(x, y, contents) {
$('<div id="tooltip">' + contents + '</div>').css( {
position: 'absolute',
display: 'none',
top: y + 5,
left: x + 5,
border: '1px solid #fdd',
padding: '2px',
'background-color': '#fee',
opacity: 0.80
}).appendTo("body").show();
}
plotWithOptions();
$("#placeholder").bind("plothover", function (event, pos, item) {
$("#x").text(pos.x.toFixed(2));
$("#y").text(pos.y.toFixed(2));
if (item) {
if (previousPoint != item.datapoint) {
previousPoint = item.datapoint;
$("#tooltip").remove();
var x = item.datapoint[0].toFixed(2),
y = item.datapoint[1].toFixed(2);
showTooltip(item.pageX, item.pageY,
item.series.label + " Group id: " + Math.floor(x) + ", y = " + y + ", seriesIndex: " + item.seriesIndex);
}
}
else {
$("#tooltip").remove();
previousPoint = null;
}
});
$("#placeholder").bind("plotclick", function (event, pos, item) {
if (item) {
$("#clickdata").text("You clicked bar " + item.dataIndex + " in " + item.series.label + ".");
}
});
});
</script>
答案 0 :(得分:3)
您使用的示例来自非常古老的flot
版本(2009年版本0.5)。当前版本(0.8.x)不支持series_spread
选项。
您可以使用SideBySideImproved插件通过当前flot
版本获取该功能。
我根据您的示例构建fiddle并更改了以下内容以获得所需的功能。
对于每个数据集:
bars: {
order: 1 // 1, 2, 3 for the three data series
},
在选项下:
bars: {
show: true,
barWidth: 0.2, // the sum must be less than 1.0
// series_spread: true,
align: "center"
},