【问题标题】:How to export the percentage value in amcharts V4 export functionality如何在 amcharts V4 导出功能中导出百分比值
【发布时间】:2021-08-20 07:14:38
【问题描述】:

我的问题与How to export the percentage value in amchart V3 export functionality基本相同,但使用amcharts v4而不是v3:我想导出amcharts使用chart.exporting功能计算的百分比值。

这是我目前所拥有的。我计算百分比并将它们显示在图表中:

const series = chart.series.push(new am4charts.ColumnSeries());
series.dataFields.categoryX = 'hoursCount';
series.dataFields.valueY = 'clientsCount';
series.name = 'Visits';
series.calculatePercent = true;
series.dataFields.valueYShow = 'percent';

然后,我正在配置导出:

chart.exporting.menu = new am4core.ExportMenu();
chart.exporting.dataFields = {
      hoursCount: 'Name of bins',
      clientsCount: 'Number of clients',
};

但是,如何将 amcharts v4 计算的 pct 添加到导出中?

【问题讨论】:

    标签: amcharts amcharts4


    【解决方案1】:

    @otmezger 已经设置好了。 series.calculatePercent = true; 这意味着百分比将被计算两次。

    chart.exporting.adapter.add("data", function(data) {
        var sum = data.data.reduce(function(accumulator, currentDataValue) {
            return accumulator + parseFloat(currentDataValue.clientsCount);
        }, 0);
        data.data.forEach(function(currentDataValue) {
            currentDataValue.percents =
                (parseFloat(currentDataValue.clientsCount) / sum * 100).toFixed(1) + "%";
        });
        return data;
    });
    

    问题已通过从 chart.series 中检索数据得到解决。

    chart.exporting.adapter.add("data", function(data, target) {
        for (var i = 0; i < data.data.length; i++) {
            var v0 = chart.series._values[0];
            data.data[i].percent = Math.round((v0.dataItems.values[i].values.value.percent || 0) * 10) / 10;
        }
        return data;
    });
    

    在新版本中,它不会两次计算百分比。

    【讨论】:

      【解决方案2】:
      chart.exporting.adapter.add("data", function(data) {
          var sum = data.data.reduce(function(accumulator, currentDataValue) {
              return accumulator + parseFloat(currentDataValue.clientsCount);
          }, 0);
          data.data.forEach(function(currentDataValue) {
              currentDataValue.percents =
                  (parseFloat(currentDataValue.clientsCount) / sum * 100).toFixed(1) + "%";
          });
          return data;
      });
      

      【讨论】:

      • 请在您的回答中提供更多详细信息。正如目前所写的那样,很难理解您的解决方案。
      • 请检查link
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-11
      • 1970-01-01
      • 1970-01-01
      • 2017-12-27
      • 2018-01-25
      • 2021-09-10
      • 2022-01-23
      相关资源
      最近更新 更多