【问题标题】:Changing granularity of amCharts data更改 amCharts 数据的粒度
【发布时间】:2015-06-03 06:30:45
【问题描述】:

我已经使用 amCharts 构建了一个序列图表。 工作流程是:

  • 前端允许用户一一添加趋势线。
  • 对于添加的每条趋势线,都会从 MySQL 数据库(使用 PHP 脚本)获取数据并以 JSON 格式返回到 amCharts。

所需功能: - 用户应该能够选择不同的粒度。 MySQL 数据库每分钟都有数据。例如,用户可以选择绘制每小时平均值。

问题: - 是否可以在从 MySQL 获取分钟数据并以 JSON 格式返回之后进行聚合?也许某些 JavaScript 函数可以聚合 PHP/MySQL 返回的 JSON 数据。

我不想在 MySQL 查询中进行聚合的原因是为了使聚合切换更快。例如,如果前端 JavaScript 正在聚合 MySQL 的分钟数据,则从小时平均值切换到日平均值不需要再次查询 MYSQL 数据库,因为分钟数据已经可用。

欢迎提出任何想法。

谢谢 普拉纳夫

【问题讨论】:

    标签: javascript mysql json aggregate-functions amcharts


    【解决方案1】:

    您只需将 Json 结果保存在变量中,然后重新构建 JSON 并将此重新构建传递给 amcharts。这样,您就可以使用 JS 进行聚合。唯一的缺点是当用户想要查看平均趋势线时,您必须向服务器询问详细...

    示例 你有 10 条不同的趋势线,每条趋势线有 4 个粒度:日、月、年、世纪。

    第一种方法 如果用户询问 5 条粒度年趋势线,您通过 AJAX CALL 获取 5 条日粒度趋势线的 json,然后在客户端使用 JS 构造月、年和世纪。

    然后,如果用户要求 6 个趋势线(并且该用户之前已经要求 5 个),您必须使 JS 足够智能,以便仅调用一个趋势线并将其添加到您已经获得的 5 个中

    第二种方法 或者您创建复杂的机制,根据需求丰富趋势线数据预测: 如果用户询问 5 条带有月度的趋势线,你会得到月份,那么你可以构造年和世纪,但不能构造日,因为它不需要。

    然后如果用户要求 6 个年份趋势线,那么您必须使函数变得聪明,JSON 接收将只包含 1 个年份趋势线,然后只为这个趋势线构建世纪,因为其他趋势线在 JS 中已经可用.

    【讨论】:

    • 感谢您的快速回复。但是,我不明白您所说的“您必须向服务器询问详细信息......或者您创建复杂的机制来丰富趋势线数据的需求”
    • @luvlogic 会回答你的问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2019-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多