【问题标题】:AmCharts 4 DataSource: Force chart to wait for all external data to loadAmCharts 4 DataSource:强制图表等待所有外部数据加载
【发布时间】:2018-11-10 00:19:55
【问题描述】:

我正在使用 AmCharts 4 使用外部数据创建散点图,使用此代码指向外部 URL:

dataURL = 'http://somesite.com/page?params=1234';
ScatterChart.dataSource.disableCache = true;
ScatterChart.dataSource.url = dataURL;

图表加载;但是,每次我加载图表时,它都会给我一组不同的数据,而且它总是会丢失我期望的大量数据。当我转到dataURL 时,外部数据会在大约 20 秒的时间内下载到其 URL 中。我认为它不是在绘图之前等待数据源页面完成下载信息。

有没有办法强制 AmCharts 在绘制图表之前等待数据源完成加载?

这是dataURL的网络视图截图:

【问题讨论】:

  • 仅供参考,这引起了我们的注意,我们会在有机会查看时通知您。
  • amCharts 4 没有任何内置数据加载超时。它也不会使用仅部分加载的数据启动图表的构建。我怀疑实际数据源可能会发生某些事情,例如可能会遇到一些服务器端执行限制,导致仅生成部分数据。我建议您尝试直接访问数据 URL 并检查它是否完全加载,没有错误 - 在输出和响应标头中。
  • @martynasma 内容在上面截图中的“等待(TTFB)”时间为 1.26 秒后出现在页面上;但是,它在“内容下载”的 21.39 秒内不断加载到页面中。在视觉上,您可以看到滚动条变小,如果您滚动到底部,它将继续加载下面的内容。起初,我尝试通过 Ajax 自己加载数据并将其发送到图表的数据对象,但最终导致浏览器崩溃,内存使用率非常高(数据只有 13Mb)。我最终将图表切换回 AmCharts3 数据加载器,它运行得很快。
  • 如果有任何可能有用的诊断信息,请告诉我。我也管理 dataURL。
  • 此外,响应或实际输出中没有错误。

标签: javascript amcharts


【解决方案1】:

暂时离开这个项目,但最近又重新开始,并确定图表仅显示某些数据点的原因是由于数据的排序顺序,而不是任何类型的数据加载超时。

在这种情况下,我将描述在构建带有日期 X 轴和值 Y 轴的散点 XY 图时发生的情况。

The documentation 表示,由于线路的连接方式令人困惑,因此顺序对于 Line Series 可能很重要,但它并不是说不会显示乱序数据。我在做实验的时候发现不一定是这样的。

当我按日期X轴升序排序时,所有数据都显示出来了。

data = data.sort((a, b) => a['DateX'] < b['DateX'] ? -1 : a['DateX'] < b['DateX'] ? 1 : 0)

当我没有按日期对数据进行排序时,它只会显示我的一些信息。

当我按日期列降序排序时,它只在我的图表上显示一个数据点。

data = data.sort((a, b) => a['DateX'] > b['DateX'] ? -1 : a['DateX'] > b['DateX'] ? 1 : 0)

所以最后,如果您遇到这种情况,请确保在将数据发送到图表之前对其进行排序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-07
    • 2016-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2018-02-20
    相关资源
    最近更新 更多