amcharts - 使用我自己的按钮在图表外部导出图表

时间:2018-05-31 16:01:23

标签: amcharts

我正在尝试使用我自己的按钮在图表外部调用导出,但是收到以下错误:

TypeError: AmCharts.AmExport is not a constructor

我使用的是我在http://jsfiddle.net/BGuuT/2/的stackoverflow上找到的一个例子,顺便说一句,但是由于某种原因,我似乎没有在我自己的实现中。也许我有更新的版本?

我在我的页面中包含:

amcharts-3.21.12/amcharts.js
amcharts-3.21.12/serial.js
amcharts-3.21.12/plugins/export/export.js

html是:

<ul id="chart-selector">
    <li class="dropdown-item" data-click="JPG">JPG</li>
    <li class="dropdown-item" data-click="PNG">PNG</li>
    <li class="dropdown-item" data-click="SVG">SVG</li>
    <li class="dropdown-item" data-click="CSV">CSV</li>
    <li class="dropdown-item" data-click="JSON">JSON</li>
    <li class="dropdown-item" data-click="PDF">PDF</li>
    <li class="dropdown-item" data-click="XLSX">XLSX</li>
    <li class="dropdown-item" data-click="PRINT">Print</li>
</ul>

我正在获取正确的导出值,但构造函数错误仍显示:

chart = AmCharts.makeChart("chart_chart", { .......... });

$('body').on('click', '#chart-selector .dropdown-item', function(e) {

    var test = $(this).data('click');

    //chart download action
    var exp = new AmCharts.AmExport(chart);
        exp.init();
        exp.output({
            format: test
        });
});

我可以在矿山和链接之间看到的唯一区别是export.js与amexport_combined.js相比 - 后者不是amcharts中给出的文件。想法?

1 个答案:

答案 0 :(得分:3)

该示例使用的是旧版本的导出插件。有关AmCharts的知识库示例&#39;使用当前版本的AmCharts v3插件的网站:

https://www.amcharts.com/kbase/export-chart-data-to-json-csv-and-excel-via-api/ https://www.amcharts.com/kbase/export-charts-advanced/

主要思想是使用导出的capture方法捕获基于图像的格式的图表状态,使用to*方法进行格式转换,然后在回调中调用download。对于基于数据的格式(如CSV,JSON和XLSX),只需调用关联的to*方法,然后download

对于JPG:

  chart.export.capture({}, function() {
    this.toJPG({}, function(data) {
      this.download(data, this.defaults.formats.JPG.mimeType, "amCharts.JPG");
    });

对于CSV

  chart.export.toCSV({}, function(data) {
    this.download(data, this.defaults.formats.CSV.mimeType, "amCharts.csv");
  });

(请注意,通过在导出配置中设置menu: []来禁用导出插件的内部下拉列表。)

以下是通过按钮调用导出API的示例:https://codepen.io/team/amcharts/pen/36056b016c577dc6bc5b4a40120fc71c