对 amCharts 的数据进行平均

问题描述 投票:0回答:1

我正在使用 amCharts 4,我想知道是否可以按周或月平均数据。我想将其集成到我的导出.菜单.项目中。

我知道可以使用具有不同时间单位的 groupInterval 。但它并没有对几周/几个月的所有数据进行平均。它只显示每周/每月的最后数据。

感谢您的帮助

劳伦特

javascript amcharts
1个回答
0
投票

要在 amCharts 4 中实现按周或按月计算数据平均值,您需要结合使用

groupData
方法和
groupInterval
groupInterval
属性确实允许按不同的时间单位(例如周或月)进行分组,但它主要处理数据的划分方式,而不是数据的聚合方式。

这是实现平均的分步方法:

  1. 按时间间隔对数据进行分组:首先,确保您的数据按所需的时间间隔(周或月)进行分组。您可以使用

    groupInterval
    来实现此目的。确保您的日期字段配置正确,以便 amCharts 可以准确地解释和分组日期。

  2. 自定义数据聚合:默认情况下,

    groupInterval
    可能不会对数据进行平均。要执行平均,您需要实现自定义聚合函数。这可以通过在数据系列上设置自定义
    groupFields
    属性来完成。

    例如,如果您要可视化值字段,则可以像这样设置其

    groupFields
    属性:

    series.groupFields.valueY = "average";
    

    这告诉 amCharts 在分组时对

    valueY
    字段进行平均。

  3. 集成到导出菜单:要将此功能集成到导出菜单中,您可以修改

    menu.items
    对象的
    exporting
    。您需要添加一个自定义菜单项,以触发使用平均函数对数据进行重新分组。这可能需要一些额外的 JavaScript 来处理交互并相应地更新图表数据。

  4. 确保数据完整性:平均时,确保平均时间段内的数据完整且准确。缺失数据可能会导致平均值出现偏差,因此可能需要对数据进行预处理以确保一致性。

  5. 更新图表配置:设置分组和平均后,您需要更新图表配置以反映这些更改。这可能涉及刷新图表或重新绑定数据源。

以下是代码的简化示例:

// Assuming you have a chart instance
let chart = am4core.create("chartdiv", am4charts.XYChart);

// Add data
chart.data = /* your data array */;

// Create axes
// ... (your axis setup)

// Create series
let series = chart.series.push(new am4charts.LineSeries());
series.dataFields.valueY = "value"; // Your value field
series.dataFields.dateX = "date"; // Your date field

// Group data
series.groupFields.valueY = "average";
series.groupInterval = { timeUnit: "week", count: 1 }; // for weekly

// Set up exporting
chart.exporting.menu = new am4core.ExportMenu();
chart.exporting.menu.items = [
    {
        "label": "...",
        "menu": [
            // Your custom menu items for exporting
            // Add custom item for re-grouping and averaging
        ]
    }
];

请记住,amCharts 是高度可定制的,因此您可能需要根据数据的具体情况和所需的图表配置来调整您的方法。另外,请注意您正在使用的 amCharts 的版本特定功能和方法。

© www.soinside.com 2019 - 2024. All rights reserved.