2013-05-30 36 views
6

OK丘比特網站有一個名爲10 Charts about Sex的信息圖表文章。帶滑塊的Javascript氣泡圖

我真的很喜歡的方式表#7是採用了氣泡圖&滑塊。

我願做同樣的事情,與我自己的JavaScript可視化最理想的是採用jQuery庫。

不幸的是,OK丘比特似乎已動畫一系列氣泡圖的PNG圖像。

對於是否有一個現有的圖表庫可以合併滑塊,我將不勝感激。或者,可以使用滑塊呈現多個Bubble Charts,並且仍然可以獲得良好的性能。

+0

可能的泡沫圖表解決方案... http://jondavidjohn.github.io/bubblechart/ – jondavidjohn

回答

0

爲了解決這個任務,我會用highcharts庫及其Series.SetData()函數。此外jQuery UI slider

工作原理:

1)綁定的功能,jQuery UI的滑塊改變事件

2)此函數會Series.SetData()有不同的數據集(基於當前滑塊上highcharts位置)圖表

2

HighChartJS + JqueryUISlider是最好的解決方案。

氣泡圖是在這裏: http://www.highcharts.com/demo/bubble

您需要導入:

<body> 
     <div id="your_chart"></div> 
     <div id="slider"></div> 
</body> 
+0

在我看來,如果沒有付費許可證,highcharts不能用於商業用途 – gray

1

你會遇到問題使用highcharts這個任務的時候到是氣泡的大小將具體到您當前正在顯示圖表。如果你想更真實地顯示氣泡大小的增長,你將不得不採取稍微不同的方法。

我用HighCharts和jQuery UI標記滑塊的組合相當最近完成這一任務。

你需要有:

在highcharts謨re.src.js,發現本節:

 for (i = 0, len = zData.length; i < len; i++) { 
     zRange = zMax - zMin; 
     pos = zRange > 0 ? // relative size, a number between 0 and 1 
      (zData[i] - zMin)/(zMax - zMin) : 
      0.5; 
     radii.push(math.round(minSize + pos * (maxSize - minSize))/2); 
    } 

而與此替換它:

 for (i = 0, len = zData.length; i < len; i++) { 
     radii.push((zData[i]/maxSize)*100); 
    } 

然後,當你初始化highcharts你需要設置如下:

        plotOptions: { 
            bubble: { 
             maxSize: MAXVALUE } }       

MAXVALUE是所有圖表中的最高值。

然後,您會根據每個滴答使用您的首選方法更新圖表的數據。例如:

      $("#slider").labeledslider({ 
          value:0, 
          min: 0, 
          max: 7, 
          step: 1, 
          slide: function(event, ui) { 
          adjustHighchart(ui.value); 
          } 
         }); 

這將確保在圖表1中的氣泡具有大小爲100比上圖2的氣泡,其具有的尺寸爲200,這將不會是如果單純更新的情況下更小的數據每次都是相對於當前顯示的數據而言的。