我需要使用dojo图表库绘制数千个点,可能接近50,000点。它可以工作,但它肯定非常慢并且滞后于浏览器。有什么方法可以让我获得更好的表现吗?
编辑:
我通过对数据应用渲染过滤器来解决。基本上,我有一个名为“render”的新项目参数,如果预期该点与其他点重叠,则由我的json源设置为false。然后,我的DataSeries将查询render: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
答案 0 :(得分:1)
我知道这可能不是您正在寻找的答案,但您是否考虑过简单地减少您正在绘制的点数?我不知道图表的具体功能,但我想大多数图表都是不必要的;没有观察者能够在中获得这样的细节。
您的解决方案可能依赖于图形技术而不是JavaScript。例如。您最有可能大大减少点数并使用折线图而不是散点图,同时仍然将相似级别的信息传达给预期目标。