带滑块的Javascript气泡图

带滑块的Javascript气泡图,javascript,jquery,Javascript,Jquery,OK丘比特网站上有一篇信息图表文章,名为 我真的很喜欢图表#7包含气泡图和滑块的方式 我想用我自己的Javascript可视化做同样的事情,理想情况下使用jQuery库 不幸的是,《OK丘比特》似乎制作了一系列泡泡图的PNG图像 我希望您能提供一些指导,说明是否有一个现有的图表库可以包含滑块。或者,可以使用滑块显示多个气泡图,但仍然可以获得良好的性能 要解决此任务,我将使用highcharts库及其Series.SetData()函数。也 工作原理: 1) 将函数绑定到jquery ui滑块更改

OK丘比特网站上有一篇信息图表文章,名为

我真的很喜欢图表#7包含气泡图和滑块的方式

我想用我自己的Javascript可视化做同样的事情,理想情况下使用jQuery库

不幸的是,《OK丘比特》似乎制作了一系列泡泡图的PNG图像


我希望您能提供一些指导,说明是否有一个现有的图表库可以包含滑块。或者,可以使用滑块显示多个气泡图,但仍然可以获得良好的性能

要解决此任务,我将使用highcharts库及其Series.SetData()函数。也

工作原理:

1) 将函数绑定到jquery ui滑块更改事件


2) 此函数将使用highcharts上的不同数据集(基于当前滑块位置)运行Series.SetData(),HighChartJS+JQueryIsLider是最佳解决方案

气泡图如下:

您需要导入:

  • 这样做:

       /* Here create your Highchart script (see bubble chart link) */
       var chart = [...];
    
       $( "#slider" ).slider({
          value:25,
          min: 0,
          max: 100,
          step: 5,
          slide: function( event, ui ) {
             chart.series[0].setData([...] );
          }
       });
    


在使用highcharts执行此任务时遇到的问题是,气泡的大小将特定于当前显示的图表。如果你想更真实地显示泡沫大小的增长,你必须采取稍微不同的方法

最近,我使用了HighCharts和JQueryUI标签slider的组合来实现这一点

您需要:

在highcharts-more.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);
    }
其中MAXVALUE是所有图表中的最高值

然后,您将根据每个刻度使用首选方法更新图表数据。例如:

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

这将确保图表1上大小为100的气泡比图表2上大小为200的气泡小,如果每次只更新数据,则情况不会如此,因为它与当前显示的数据相关

可能的气泡图解决方案。。。在我看来,没有付费许可证,highcharts不能用于商业用途
        for (i = 0, len = zData.length; i < len; i++) {
        radii.push((zData[i]/maxSize)*100);
    }
                                    plotOptions: {
                                    bubble: {
                                        maxSize: MAXVALUE } }                        
                            $( "#slider" ).labeledslider({
                          value:0,
                          min: 0,
                          max: 7,
                          step: 1,
                          slide: function( event, ui ) {
                            adjustHighchart(ui.value);  
                          }
                        });