0

我需要使用 dojo 图表库绘制数千个点,可能接近 50,000 个点。它可以工作,但它肯定非常慢并且落后于浏览器。有什么办法可以获得更好的性能吗?

编辑:

我通过对数据应用渲染过滤器来解决。本质上,我有一个名为“render”的新项目参数,如果预计该点与其他点重叠,我的 json 源将其设置为 false。然后,我的 DataSeries 查询呈现:true 的所有点。这样,对于需要所有点的非可视源,所有数据仍然存在,而我的图表现在运行顺利。

伪代码:

def is_overlapped(x, y, x_round, y_round)
    rounded_x = round(x, x_round)
    rounded_y = round(y, y_round)
    hash = hash_xy(rounded_x, rounded_y)

    if(@overlap_filter[hash].nil?)
      @overlap_filter[hash] = true
      return false
    end

    return true
end

x_round 和 y_round 可以由 x 和 y 范围确定,例如 range / 100

4

1 回答 1

1

我知道这可能不是您正在寻找的答案,但是您是否考虑过简单地减少您正在绘制的点数?我不知道图表的具体功能,但我想大多数具有这么多点的图表都是不必要的;并且没有观察者能够了解这种详细程度。

您的解决方案可能在于图形技术而不是 JavaScript。例如,您很可能会大大减少点数并使用折线图而不是散点图,同时仍将相似级别的信息传达给您的预期目标。

于 2011-08-11T14:06:42.073 回答