Highcharts 中文社区

 找回密码
 立即注册
查看: 663|回复: 6

[已解决] 关于获取hicharts里特定某一条Series的方法?

[复制链接]
  • TA的每日心情
    开心
    2016-12-17 16:00
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    7

    主题

    24

    帖子

    122

    积分

    HC 新手

    Rank: 1

    积分
    122

    最佳新人活跃会员

    发表于 2016-11-21 21:27:47 | 显示全部楼层 |阅读模式
    本帖最后由 longsir 于 2016-11-21 21:31 编辑

    请教各位一个问题,如果chart包含了多条series(包括name为'Aseries'和'Bseries'的两条Series),该如何获取特定的某一条Series呢?
    series: [{
        name: 'Aseries',
        data: [49.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4],
    }, {
        name: 'Bseries',
        data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6],
    }]

    我现在的方法是,采用遍历所有Series,然后对比name。
    for( i = 0; i < chart.Series.length; ++i){
        if ('Aseries' == chart.Series.name){
                    ........
        }
    }
    这种做法就是复杂度高,每次获取一个series,都要将所有series循环一遍, 请教各位,有没有类似用name来获取Series的方法,如 chart.Series.['Aseries']?

    本帖被以下淘专辑推荐:

  • TA的每日心情
    开心
    2017-1-25 11:33
  • 签到天数: 581 天

    [LV.9]以坛为家II

    5

    主题

    793

    帖子

    1万

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    12510

    论坛元老

    发表于 2016-11-22 09:25:20 | 显示全部楼层
    估计你的series也不多。循环一下也无所谓。
    Highcharts 中文网论坛管理团队

    我们提供:商业授权技术支持图表定制VIP服务 等相关支持服务
    在线客服:2133220776(QQ,非技术,工作日 10:00 ~ 17:00)
    新浪微博:http://weibo.com/highcharts
  • TA的每日心情
    开心
    2016-12-17 16:00
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    7

    主题

    24

    帖子

    122

    积分

    HC 新手

    Rank: 1

    积分
    122

    最佳新人活跃会员

     楼主| 发表于 2016-11-22 10:35:32 | 显示全部楼层
    本帖最后由 longsir 于 2016-11-22 10:56 编辑
    jsbome 发表于 2016-11-22 09:25
    估计你的series也不多。循环一下也无所谓。

    恩 谢谢你的回复, 现在我的问题就在于series很多, 40条左右,每新增一个数据点,就要循环遍历一次,搞得cpu占用率很高,我现在的做法,是用了一个字典,将name和index做了一个映射, name ——> index, 但问题是,我不知道如果程序不断新增series, 这个index会不会发生改变?
  • TA的每日心情
    擦汗
    2017-11-29 14:57
  • 签到天数: 747 天

    [LV.9]以坛为家II

    86

    主题

    1107

    帖子

    2万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    21535

    最佳新人活跃会员热心会员突出贡献优秀版主荣誉管理论坛元老

    发表于 2016-11-22 11:05:40 | 显示全部楼层
    可以通过 chart.get() 函数来获取。
    另外这么小的数据量循环来遍历根本就不耗性能。
    Highcharts 中文网论坛管理团队

    我们提供:商业授权技术支持图表定制VIP服务 等相关支持服务
    在线客服:2133220776(QQ,非技术,工作日 10:00 ~ 17:00)
    新浪微博:http://weibo.com/highcharts
  • TA的每日心情
    开心
    2016-12-17 16:00
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    7

    主题

    24

    帖子

    122

    积分

    HC 新手

    Rank: 1

    积分
    122

    最佳新人活跃会员

     楼主| 发表于 2016-11-22 12:58:21 | 显示全部楼层
    本帖最后由 longsir 于 2016-11-22 13:00 编辑
    群大大 发表于 2016-11-22 11:05
    可以通过 chart.get() 函数来获取。
    另外这么小的数据量循环来遍历根本就不耗性能。
    ...

    终于等到群大大的回复了, :):):victory::victory:
    正如大大所说,性能瓶颈可能不在于循环,当我改用chart.get()方法后,性能并没有显著的改善。

    另外还想请教一下大大, 我的应用场景是同时观测40只股票的实时价格情况,平均每秒钟在各个Series上addpoint()一次,我发现当数据量变大以后,如每个series上的points数量超过500以后,cpu占用就会明显上升(cpu占用率超过10%-20%),web偶尔会出现卡顿的现象,这个性能消耗是不是series上的数据点太多造成的? 如果是,请问可以如何优化一下呢?

    我想到的一个办法是,将每秒钟改成每两秒添加一次数据,减少点数据量,除此之外还有其他方法吗?
  • TA的每日心情
    擦汗
    2017-11-29 14:57
  • 签到天数: 747 天

    [LV.9]以坛为家II

    86

    主题

    1107

    帖子

    2万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    21535

    最佳新人活跃会员热心会员突出贡献优秀版主荣誉管理论坛元老

    发表于 2016-11-22 17:26:16 | 显示全部楼层
    longsir 发表于 2016-11-22 12:58
    终于等到群大大的回复了,
    正如大大所说,性能瓶颈可能不在于循环,当我改用chart ...

    可以针对 addPoint 这个函数进行优化。
    addPoint (Object options, [Boolean redraw], [Boolean shift], [Mixed animation])
    • redraw 表示是否对图表进行重绘
    • shift 表示是否在添加一个点的同时删除第一个点

    优化策略:

    1、40 个数据列在执行 addPoint 时先不重绘,即 redraw 设置为 false,循环完毕后再调 chart.redraw()
    2、在图表中的点数达到一定数量后(比如 100, 500 等),设置 shift 为 true, 否则为 false,这样可以保证图表中的数据点不会一直增加。
    Highcharts 中文网论坛管理团队

    我们提供:商业授权技术支持图表定制VIP服务 等相关支持服务
    在线客服:2133220776(QQ,非技术,工作日 10:00 ~ 17:00)
    新浪微博:http://weibo.com/highcharts
  • TA的每日心情
    开心
    2016-12-17 16:00
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    7

    主题

    24

    帖子

    122

    积分

    HC 新手

    Rank: 1

    积分
    122

    最佳新人活跃会员

     楼主| 发表于 2016-11-22 23:43:27 | 显示全部楼层
    群大大 发表于 2016-11-22 17:26
    可以针对 addPoint 这个函数进行优化。
  • redraw 表示是否对图表进行重绘

  • 谢谢群大大的详细回复,
    很详细也很受启发,再次感谢
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    快速回复 返回顶部 返回列表