2012-07-18 138 views
7

我使用jqPlot和jqplot.PieRenderer来尝试并显示饼图。在标签上,我想展示value (percent)。该文件说您可以通过dataLabel标签类型(source),但%d%%(对于百分比)和%d(对于值)在dataLabelFormatString选项最终显示什么都没有。jqPlot在饼图上显示百分比和值

这里的任何想法?

{ 
    seriesDefaults: { 
     renderer: jQuery.jqplot.PieRenderer, 
     rendererOptions: { 
      showDataLabels: true, 
      dataLabels: ['value', 'percent'], 
      dataLabelFormatString: "%d %d%%", 
      sliceMargin: 4, 
      fill: false 
     } 
    }, 
    legend: { show:true, location: 'e' } 
} 

回答

18

我读了那些文档有点不同。这是选项'值','百分比','标签'或标签数组。不是一系列选项。要做你想做的事情,你需要创建你的数据标签作为一个真正的标签数组。

例如:

data = [ 
    ['Heavy Industry', 12],['Retail', 9], ['Light Industry', 14], 
    ['Out of home', 16],['Commuting', 7], ['Orientation', 9] 
]; 

var total = 0; 
$(data).map(function(){total += this[1];}) 

myLabels = $.makeArray($(data).map(function(){return this[1] + " " + Math.round(this[1]/total * 100) + "%";})); 

见例如拨弄here

+0

非常感谢您!我希望我能给你一个以上的代表。 – Snuffleupagus 2012-07-19 15:43:02

+0

不客气。 – Mark 2012-07-19 16:25:06

+0

优秀 - 我也对文档有点困惑,并试图实现一系列选项 - 你解决了它 - 超级谢谢。 – YonoRan 2014-04-14 11:24:49

0

使用

formatter: function(label, series){ 
         return '<div style="font-size:14pt;text-align:center;padding:2px;color:white;">'+Math.round(series.percent)+"%<br/>" + series.data[0][1] +'</div>'; 
        },