【发布时间】:2012-01-28 16:50:38
【问题描述】:
在堆积条形图中,我们可以显示每个堆栈中每个系列的总数,如下所示
但是我希望显示每个系列的值,而不是这样的总数(请忽略两个样本具有不同系列数量的事实)
此外,我想在顶部显示堆栈的总数。
我的意思是,如果你看第一张图,在第一个栏中,值是 5,15(5+10),24(15+9)。
我想要的结果应该像第二张图一样,其中第一个条的值是 10,9,最后是前 19 的总和
这个库可以吗?
【问题讨论】:
在堆积条形图中,我们可以显示每个堆栈中每个系列的总数,如下所示
但是我希望显示每个系列的值,而不是这样的总数(请忽略两个样本具有不同系列数量的事实)
此外,我想在顶部显示堆栈的总数。
我的意思是,如果你看第一张图,在第一个栏中,值是 5,15(5+10),24(15+9)。
我想要的结果应该像第二张图一样,其中第一个条的值是 10,9,最后是前 19 的总和
这个库可以吗?
【问题讨论】:
这里有点破解。由于您需要为每个系列添加一个标签,因此我介绍了一个“空”系列。不过,它很好地复制了你想要的东西。小提琴here.
$(document).ready(function(){
var s1 = [5, 6];
var s2 = [7, 5];
var s3 = [14, 9];
var s4 = [0, 0]; //empty series just for total labels
var pLabels1 = []; // arrays for each inner label
var pLabels2 = [];
var pLabels3 = [];
var pLabelsTotal = []; // array of totals above each column
for (var i = 0; i < s1.length; i++){
pLabels1.push('<div style="border:1px solid gray">'+s1[i]+'</div>');
pLabels2.push('<div style="border:1px solid gray">'+s2[i]+'</div>');
pLabels3.push('<div style="border:1px solid gray">'+s3[i]+'</div>');
pLabelsTotal.push(s1[i]+s2[i]+s3[i]);
}
plot3 = $.jqplot('chart2', [s1, s2, s3, s4], {
// Tell the plot to stack the bars.
stackSeries: true,
captureRightClick: true,
seriesDefaults:{
renderer:$.jqplot.BarRenderer,
rendererOptions: {
// Put a 30 pixel margin between bars.
barMargin: 30,
// Highlight bars when mouse button pressed.
// Disables default highlighting on mouse over.
highlightMouseDown: true
},
},
series:[
{
pointLabels:{
show:true,
labels:pLabels1,
ypadding: -25,
escapeHTML:false
}
},
{
pointLabels:{
show:true,
labels:pLabels2,
ypadding: -25,
escapeHTML:false
}
},
{
pointLabels:{
show:true,
labels:pLabels3,
ypadding: -25,
escapeHTML:false
}
},
{
pointLabels:{
show:true,
labels:pLabelsTotal,
ypadding: 7,
escapeHTML:false
}
}
],
axes: {
xaxis: {
renderer: $.jqplot.CategoryAxisRenderer
},
yaxis: {
padMin: 0,
min: 0
}
},
legend: {
show: false,
}
});
});
生产:
【讨论】:
pLabelsTotal.push(""+(s1[i]+s2[i]+s3[i]));至于一些奇怪的原因,它在每个总数之后显示.00。不久前我也做了一个类似的解决方案,尽管在我的示例中,总数是硬编码的。有兴趣的可以看这里stackoverflow.com/a/10296988/613495