2012-01-28 65 views
9

在堆疊條形圖中,我們可以顯示每個堆棧中的每個系列的總計,如下所示 current 但是,我希望顯示每個系列的值,而不是像這樣的總計請忽略這兩個樣本具有不同數量的系列)這一事實 desired 此外,我想在頂部顯示堆棧的總數。 我的意思是說,如果你看第一張圖,在第一欄中,數值是5,15(5 + 10),24(15 + 9)。 我想要的結果應該像第二個圖,其中第一個欄的值是10,9,最後是總共19
這個庫可以嗎?jqplot - 個別值,而不是堆疊圖表中的總計

回答

8

這裏有一點點黑客。既然你想爲每個系列添加一個標籤,我已經介紹了一個「空白」系列。它儘可能複製你想要的東西。小提琴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, 
    }  
    }); 
}); 

產地:

enter image description here

+0

嗯很大TNX。出於某種原因,小提琴不能正常工作,請嘗試鏈接資源錯誤。 Tnx無論如何 – anu 2012-01-29 17:42:00

+0

@anu,抱歉應該提到有關小提琴。 jqplot不允許盜鏈他們的js文件。您必須導航到這些文件並將它們緩存在瀏覽器中以便小提琴工作。 – Mark 2012-01-29 22:13:42

+2

我爲這個代碼導入了一個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

相關問題