2015-04-16 57 views
2

我爲我的jqPlot圖表使用EnhancedLegendRenderer插件,但是我無法使它適用於餅圖。jqPlot EnhancedLegendRenderer插件不會爲餅圖切換系列

如果我點擊圖例標籤,它們不顯示或隱藏系列。這裏是jsFiddle example

legend: { 
    renderer: $.jqplot.EnhancedLegendRenderer, 
    rendererOptions: { 
     numberColumns: 3, 
     seriesToggle: true 
    }, 
    show: true 
} 

有沒有人遇到過,找到了解決辦法?

+0

請參閱本小提琴。 http://jsfiddle.net/nk2ec/44/ – Mai

+0

這是因爲餅圖會用自己的PieLegendRenderer覆蓋任何渲染器:https://bitbucket.org/cleonello/jqplot/src/e8af8a37f0f14ea1e8c630ecfe6f1b1933794036/src/plugins/jqplot.pieRenderer .js?at = default我試圖強制增強圖例渲染器,但它只顯示1個標籤,而不是5個。 您需要重寫pieRenderer.js文件,並以某種方式更改PieLegendRenderer類的源代碼,以便它支持系列切換。以某種方式組合這些類。如果我有機會,我可以嘗試這樣做。 – vorrtex

回答

2

不知何故正確的答案,ZingChart看起來不錯,並具有開箱即用的功能,但jqPlot是免費和開源的。

我重寫了jqPlot餅圖插件,現在您的示例中的餅圖將起作用。 Here is my blog post解釋我改變了什麼。

下載這2個文件:

  1. extendedPieRenderer.js(它取代jqplot.pieRenderer.js)

  2. enhancedPieLegendRenderer.js(它取代 jqplot.enhancedLegendRenderer.js)

而且像這樣使用它們:

<script type="text/javascript" src="jquery.jqplot.js"></script> 
<script type="text/javascript" src="extendedPieRenderer.js"></script> 
<script type="text/javascript" src="enhancedPieLegendRenderer.js"></script> 
<script type="text/javascript"> 
... 
var plot = $.jqplot('chart', data, { 
    seriesDefaults: { 
     renderer: $.jqplot.PieRenderer 
    }, 
    legend: { 
     renderer: $.jqplot.EnhancedPieLegendRenderer 
    } 
}); 
... 
</script> 

Pie chart image

我也創造了這個的jsfiddle,你可以打開並驗證的顯示和隱藏的作品:http://jsfiddle.net/19vzL5h2/1/

2

我不確定你是如何與jqPlot綁定的,但許多圖書館都有這種選項.Highcharts擁有它(並且在大多數情況下免費,如果這是你的擔憂),我最近在AmCharts太。

它也可以通過ZingChart JavaScript圖表庫。我用切換圖例進行了演示,供您嘗試。

<html> 
 
\t <head> 
 
\t \t <script src="https://blog.pint.com/include_files/zingchart-html5-min.js"></script> 
 
\t  <script src="http://cdn.zingchart.com/zingchart-core.min.js"></script> 
 
<script>zingchart.MODULESDIR="http://cdn.zingchart.com/modules/";</script> 
 
\t \t <meta charset="utf-8"> 
 
\t \t <title>Pie chart with legend</title> 
 
\t </head> 
 
<div id="zc"></div> 
 
\t   
 
\t <script> 
 
     var piedemo ={ 
 

 
     "type":"pie", 
 
     "plot":{ 
 
      "value-box":{ 
 
       "text":"%v" 
 
      } 
 
     }, 
 
     "series":[ 
 
      { 
 
       "text":"Apples", 
 
       "values":[5] 
 
      }, 
 
      { 
 
       "text":"Oranges", 
 
       "values":[8] 
 
      }, 
 
      { 
 
       "text":"Bananas", 
 
       "values":[22] 
 
      }, 
 
      { 
 
       "text":"Grapes", 
 
       "values":[16] 
 
      } 
 
     ], 
 
"legend":{ 
 
    "header":{ 
 
     "text":"Click an item to toggle" 
 
    }, 
 
    "layout":"x4", 
 
     "marker":{ 
 
      "type":"circle", 
 
      "size":4, 
 
      "border-color":"#333" 
 
     } 
 
    } 
 
}; 
 

 
zingchart.render({ 
 
    id: 'zc', 
 
    data: piedemo, 
 
    height: 400, 
 
    width: 400 
 
}); 
 

 

 

 
\t \t </script> 
 

 
\t </body> \t 
 
</html>

我在ZingChart團隊,所以如果你有這個演示有任何疑問,請隨時與我們聯繫。

+0

嗨我曾經在highcharts(我喜歡它),但問題是我不能免費使用它們...特別是如果這是我們組織內部的東西 – Mai

+0

這是我們要麼尋找jqplot或flot的主要原因。 – Mai