這裏有一點點黑客。既然你想爲每個系列添加一個標籤,我已經介紹了一個「空白」系列。它儘可能複製你想要的東西。小提琴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,
}
});
});
產地:
嗯很大TNX。出於某種原因,小提琴不能正常工作,請嘗試鏈接資源錯誤。 Tnx無論如何 – anu 2012-01-29 17:42:00
@anu,抱歉應該提到有關小提琴。 jqplot不允許盜鏈他們的js文件。您必須導航到這些文件並將它們緩存在瀏覽器中以便小提琴工作。 – Mark 2012-01-29 22:13:42
我爲這個代碼導入了一個jsfiddle示例,它導入了原始的jqPlot腳本,所以如果感興趣的話,你可以看到代碼運行時沒有麻煩http://jsfiddle.net/Boro/Ymca3/135/我只需要添加一個字符串連接到'pLabelsTotal.push(「」+(s1 [i] + s2 [i] + s3 [i]));'就某種奇怪的原因而言,它在每次總計後顯示'.00'。不久前,我做了一個類似的解決方案,但是在我的樣本總數中是硬編碼的。如果感興趣,你可以看看這裏http://stackoverflow.com/a/10296988/613495 – Boro 2012-05-24 10:53:13