2012-01-28 4 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합니다. 웬일인지 바이올린이 작동하지 않습니다. 자원에 대한 링크가 잘못되었습니다. 어쨌든 – anu

+0

@anu, 죄송합니다 바이올린에 대해 언급 했어야합니다. jqplot은 js 파일의 핫 링크를 허용하지 않습니다. 바이올린이 작동하려면 브라우저에서 파일을 탐색하고 캐시해야합니다. – Mark

+2

원시 jqPlot 스크립트를 가져 오는이 코드에 대해 jsfiddle 샘플을 만들었습니다. 관심이있는 경우 번거롭지 않게 실행되는 코드를 볼 수 있습니다. http://jsfiddle.net/Boro/Ymca3/135/ String 연결을 추가해야했습니다. pLabelsTotal.push (""+ (s1 [i] + s2 [i] + s3 [i])); 각 별명 뒤에'.00'을 표시하는 별난 이유가 있습니다. 또한 얼마 전에 비슷한 솔루션을 만들었지 만 샘플 수는 하드 코딩되었습니다. 관심이 있으시면 http://stackoverflow.com/a/10296988/613495 – Boro