首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带滑块的Javascript气泡图

带滑块的Javascript气泡图
EN

Stack Overflow用户
提问于 2013-05-30 11:33:29
回答 3查看 2.2K关注 0票数 6

OK丘比特网站有一篇名为10 Charts about Sex的信息图表文章。

我真的很喜欢Chart #7包含一个气泡图和一个滑块的方式。

我想用我自己的Javascript可视化效果做同样的事情,最好是使用jQuery库。

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

如果有一个现有的图表库可以合并滑块,我将不胜感激。或者,可以使用滑块显示多个气泡图,但仍然可以获得良好的性能。

EN

回答 3

Stack Overflow用户

发布于 2013-05-30 15:23:03

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

气泡图在这里:http://www.highcharts.com/demo/bubble

您需要导入:

  • http://code.jquery.com/jquery-1.9.1.min.js
  • http://code.jquery.com/ui/1.10.3/jquery-ui.js
  • http://code.highcharts.com/highcharts.js

然后做这样的事情:

/*此处创建您的Highchart脚本(参见气泡图链接) */ var chart = ...;$( "#slider“).slider({ value:25,min: 0,max: 100,step: 5,slide: function( event,ui ){ chart.series.setData(... );} });

票数 2
EN

Stack Overflow用户

发布于 2013-05-31 21:40:54

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

我最近使用了HighCharts和jQuery UI标签滑块的组合来实现这一点。

您需要具备以下条件:

在highcharts-more.src.js中,找到以下部分:

代码语言:javascript
复制
        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);
    }

并将其替换为以下内容:

代码语言:javascript
复制
        for (i = 0, len = zData.length; i < len; i++) {
        radii.push((zData[i]/maxSize)*100);
    }

然后,在初始化highcharts时,您需要设置以下内容:

代码语言:javascript
复制
                                    plotOptions: {
                                    bubble: {
                                        maxSize: MAXVALUE } }                        

其中MAXVALUE是所有图表中的最高值。

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

代码语言:javascript
复制
                            $( "#slider" ).labeledslider({
                          value:0,
                          min: 0,
                          max: 7,
                          step: 1,
                          slide: function( event, ui ) {
                            adjustHighchart(ui.value);  
                          }
                        });

这将确保图表1上大小为100的气泡比图表2上大小为200的气泡小,如果您每次都简单地更新数据,情况就不同了,因为它是相对于当前显示的数据的。

票数 1
EN

Stack Overflow用户

发布于 2013-05-30 14:05:35

为了解决这个问题,我将使用highcharts库和它的Series.SetData()函数。也就是jQuery UI slider

它的工作原理:

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

2)此函数将对highcharts上的不同数据集(基于当前滑块位置)运行Series.SetData()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16827496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档