图表导出与分享

 前端   小卒子   2024-10-12 22:24   99

ECharts 图表导出与分享

ECharts 是一个强大的数据可视化库,除了在网页上展示交互式图表外,有时我们也需要将这些图表导出为图片或 PDF,以便分享或报告使用。本文将介绍如何将 ECharts 图表导出为图片、PDF 等格式,以及如何在社交媒体或网页中分享这些图表。

一、图表导出

1. 导出为图片

ECharts 提供了简单的方法来将图表导出为图片。可以通过 getDataURL 方法获取图表的图片 URL,并将其下载到本地。

示例代码

// 创建 ECharts 实例
const myChart = echarts.init(document.getElementById('main'));

// 设置图表的基本配置
const option = {
  title: {
    text: 'ECharts 导出示例',
  },
  tooltip: {},
  xAxis: {
    data: ['A', 'B', 'C', 'D', 'E'],
  },
  yAxis: {},
  series: [{
    name: '销量',
    type: 'bar',
    data: [5, 20, 36, 10, 10],
  }],
};

// 使用设置的配置项和数据显示图表
myChart.setOption(option);

// 导出图表为图片
document.getElementById('exportBtn').onclick = function () {
  const url = myChart.getDataURL({
    type: 'png', // 图片格式,可以是 png 或 jpeg
    pixelRatio: 2, // 像素比例
    backgroundColor: '#fff', // 背景色
  });

  const link = document.createElement('a');
  link.href = url;
  link.download = 'echarts-chart.png'; // 下载文件名
  link.click();
};

说明

  • getDataURL 方法可以接收一个对象参数,配置导出的图片类型、像素比例和背景颜色等。
  • 使用 <a> 标签创建下载链接,触发下载操作。

2. 导出为 PDF

虽然 ECharts 本身不直接支持导出为 PDF,但可以借助其他库(如 jsPDF)将图表导出为 PDF 文件。

示例代码

// 引入 jsPDF
const { jsPDF } = window.jspdf;

// 导出图表为 PDF
document.getElementById('exportPdfBtn').onclick = function () {
  const pdf = new jsPDF('l', 'mm', 'a4'); // 创建 PDF 对象
  const imgData = myChart.getDataURL({
    type: 'png',
    pixelRatio: 2,
  });

  pdf.addImage(imgData, 'PNG', 10, 10, 280, 150); // 添加图表图片到 PDF
  pdf.save('echarts-chart.pdf'); // 下载 PDF 文件
};

说明

  • 需要确保在项目中引入 jsPDF 库。
  • 使用 addImage 方法将 ECharts 图表的图片添加到 PDF,并保存为文件。

二、图表分享

1. 分享到社交媒体

在网页中,可以通过生成分享链接或分享按钮将图表分享到社交媒体。

示例代码

<!-- 分享按钮 -->
<button id="shareBtn">分享图表</button>
document.getElementById('shareBtn').onclick = function () {
  const url = myChart.getDataURL({
    type: 'png',
    pixelRatio: 2,
  });

  // 生成分享链接,假设使用微信分享
  const shareUrl = `https://www.example.com/share?image=${encodeURIComponent(url)}`;
  
  // 在此处可以使用微信JS-SDK等分享SDK实现分享
  window.open(shareUrl, '_blank'); // 打开分享链接
};

2. 在网页中嵌入图表

可以通过直接嵌入图表到网页中,来分享图表。

示例代码

<!-- 其他网页中引用 ECharts 图表 -->
<div id="sharedChart" style="width: 600px; height: 400px;"></div>

<script>
  // 初始化 ECharts 图表
  const sharedChart = echarts.init(document.getElementById('sharedChart'));
  sharedChart.setOption(option); // 使用相同的配置
</script>

三、综合示例

下面是一个完整的示例代码,包括图表的创建、导出以及分享功能:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>ECharts 导出与分享示例</title>
  <script src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.4.0/jspdf.umd.min.js"></script>
</head>
<body>
  <div id="main" style="width: 600px; height: 400px;"></div>
  <button id="exportBtn">导出为图片</button>
  <button id="exportPdfBtn">导出为 PDF</button>
  <button id="shareBtn">分享图表</button>

  <script>
    const myChart = echarts.init(document.getElementById('main'));
    const option = {
      title: {
        text: 'ECharts 导出与分享示例',
      },
      tooltip: {},
      xAxis: {
        data: ['A', 'B', 'C', 'D', 'E'],
      },
      yAxis: {},
      series: [{
        name: '销量',
        type: 'bar',
        data: [5, 20, 36, 10, 10],
      }],
    };
    myChart.setOption(option);

    document.getElementById('exportBtn').onclick = function () {
      const url = myChart.getDataURL({
        type: 'png',
        pixelRatio: 2,
        backgroundColor: '#fff',
      });
      const link = document.createElement('a');
      link.href = url;
      link.download = 'echarts-chart.png';
      link.click();
    };

    document.getElementById('exportPdfBtn').onclick = function () {
      const pdf = new jsPDF('l', 'mm', 'a4');
      const imgData = myChart.getDataURL({
        type: 'png',
        pixelRatio: 2,
      });
      pdf.addImage(imgData, 'PNG', 10, 10, 280, 150);
      pdf.save('echarts-chart.pdf');
    };

    document.getElementById('shareBtn').onclick = function () {
      const url = myChart.getDataURL({
        type: 'png',
        pixelRatio: 2,
      });
      const shareUrl = `https://www.example.com/share?image=${encodeURIComponent(url)}`;
      window.open(shareUrl, '_blank');
    };
  </script>
</body>
</html>

四、总结

本文介绍了如何将 ECharts 图表导出为图片和 PDF,并分享至社交媒体或嵌入网页中。通过简单的代码示例,您可以轻松实现这些功能,为您的数据可视化提供更多的灵活性与分享可能。希望这些内容能够帮助您更好地利用 ECharts 进行数据展示与分享!