2011-10-25 81 views
1

我遇到了jqplot的問題,並將數據標籤放置在堆疊圖表上。jqplot和堆疊圖表數據標籤

我正在繪製每列三個數據值。問題是當其中一個數據值非常小(如1%)時,數據標籤與相鄰數據值的數據標籤重疊。

我已上載這裏的圖像: http://img84.imageshack.us/img84/1305/capturell.jpg

我想要做的是能在每欄的中間數據標籤的位置。這可能嗎?

這裏是我使用的代碼:

plot1 = $.jqplot(id, data, { 
    seriesDefaults:{ 
     renderer:$.jqplot.BarRenderer, 
     rendererOptions: { 
     fillToZero: true, 
      highlightMouseOver: false, 
     highlightMouseDown: false, 
     highlightColor: null, 
     barDirection: 'horizontal' 
     }, 
     pointLabels: { show: true, location: 'e', edgeTolerance: -15 } 
    }, 
    title:{text: title,fontSize: 16}, 

    series:[ 
     {label: data_labels[0] }, 
     {label: data_labels[1]} 

    ], 
    seriesColors: [ "#4879a6", "#d9321d"], 

       // Rotate the bar shadow as if bar is lit from top right. 
    shadowAngle: 135, 

    axes: { 
     xaxis: { 
     min: 0, 
     max: 100, 
     tickInterval: 20, 
     tickOptions: {formatString: '%d\%' ,fontSize: 14} 
     }, 
     yaxis: { 
     renderer: $.jqplot.CategoryAxisRenderer, 
     ticks: ticks, 
     tickOptions: {fontSize: 14} 
     } 
    } 
+0

很沒用過jqplot。但是,兩個指針:1.爲什麼你有一個負邊容差? 2.你可以嘗試jqplot – Raghav

+0

的渲染器的「dataLabelNudge」屬性Hi Srini - 我在邊緣容忍中玩耍,這就是爲什麼它的消極。它並不會真正影響事物,因爲數據標籤是靠近圖表邊緣的。 – user1013543

+0

我認爲「dataLabelNudge」屬性僅適用於餅圖和甜甜圈圖表。 – user1013543

回答

2

記住seriesDefaults只是傳遞相同的值到它不是已經定義了一系列的每個實例。所以......

seriesDefaults:{pointLabels: {show: true, stackedValue: false, location:'s'}}, 

相同

series:[ 
      {pointLabels: {show: true, stackedValue: false, location:'s'}},   
      {pointLabels: {show: true, stackedValue: false, location:'s'}}, 
      {pointLabels: {show: true, stackedValue: false, location:'s'}}    
      ] 
在jqplots網站

他顯示了這個例子。 http://www.jqplot.com/deploy/dist/examples/point-labels.html

它顯示一個名爲y-padding的值傳遞給pointLabels,這應該可以做到。該示例顯示瞭如何在傳遞給jqplot的數據數組中傳遞自定義點值標記。如果您可以將一些html放在一邊來設計數據標記,它不會讓我感到震驚。

var data = [[x,y,tooltipValue],[x,y,null]];  

希望這會有所幫助,或者至少讓您指出正確的方向。

1

試試這個dataLabelPositionFactor特性