1. 为什么选择ECharts4Taro3?
在前端开发中,数据可视化在越来越得到重视,同时前端框架的选择也变得越来越多。而在实现数据可视化的过程中,ECharts无疑是一个好的选择。而在使用Taro开发小程序或H5页面时,我们现在可以使用ECharts4Taro3来完成数据可视化。
ECharts是百度开源的一个纯Javascript图表库,提供了直观、生动、可交互、可个性化定制的数据可视化图表,支持直接在浏览器中使用、可以嵌入到React、Vue、Angular等常见框架中,而ECharts4Taro3则是将ECharts适配到Taro框架中的封装。相较于其他的可视化库,ECharts拥有众多的图表类型和样式,并且具备高度的自定义性,可以满足我们大部分的数据可视化需求。
2. ECharts4Taro3的安装与配置
2.1 安装
在安装前,需要先确保我们已安装了Taro和ECharts:
npm install -g @tarojs/cli
npm install echarts --save
安装ECharts4Taro3:
npm install echarts-for-taro3 --save
2.2 配置
在app.config.ts中,需要将ECharts组件和图表类型注册到Taro中,以便在项目中使用:
import TaroECharts from "echarts-for-taro3";
const echartsMap = {
line: TaroECharts.Component.Line,
bar: TaroECharts.Component.Bar,
pie: TaroECharts.Component.Pie,
};
const plugins = [TaroECharts.Plugin.Grid, TaroECharts.Plugin.Title];
export default {
pages: [],
plugins,
window: {},
tabBar: {},
usingComponents: Object.assign({}, echartsMap),
};
3. 实现动态导出功能
在项目中,我们有时需要将图表导出为图片或PDF文件,用于报表或其他用途。可以在ECharts4Taro3中使用echarts-convert插件实现该功能。
3.1 安装echarts-convert
首先,我们需要安装echarts-convert插件:
npm install echarts-convert --save
3.2 导出图片
实现导出图片的方法如下,其中chart为我们需要导出的echarts图表实例:
import { ec_convert } from "echarts-convert";
import { saveAs } from "file-saver";
export const exportChart2Image = (chart) => {
const opts = {
width: 800, // 导出图片的宽度
height: 400, // 导出图片的高度
devicePixelRatio: window.devicePixelRatio || 1,
backgroundColor: "#fff", // 导出图片的背景色
};
ec_convert(chart, opts, function (dataURL) {
const blob = dataURLToBlob(dataURL);
saveAs(blob, "export_chart.png");
});
};
// 辅助函数:将base64的dataURL转为Blob对象
function dataURLToBlob(dataURL) {
const parts = dataURL.split(";base64,");
const contentType = parts[0].split(":")[1];
const raw = window.atob(parts[1]);
const rawLength = raw.length;
const uInt8Array = new Uint8Array(rawLength);
for (let i = 0; i < rawLength; ++i) {
uInt8Array[i] = raw.charCodeAt(i);
}
return new Blob([uInt8Array], { type: contentType });
}
该函数将会输出一个名为export_chart.png的图像文件,并将该图像文件保存至本地。
3.3 导出PDF
导出PDF与导出图片的操作基本类似,只要将导出函数稍作修改即可。我们仍然需要使用echarts-convert插件,将图表转为PDF文件。这里我们借助了pdfmake库,该库可以高效地将javascript对象转换为PDF文档。
首先,我们需要安装以下库:
npm install file-saver html2canvas pdfmake --save
然后我们在工具库中添加了导出PDF文件的方法:
import { ec_convert } from "echarts-convert";
import { saveAs } from "file-saver";
import html2canvas from "html2canvas";
import pdfMake from "pdfmake/build/pdfmake";
import pdfFonts from "pdfmake/build/vfs_fonts";
// 注册pdfMake的字体
pdfMake.vfs = pdfFonts.pdfMake.vfs;
export const exportChart2Pdf = (chart) => {
const opts = {
width: 800,
height: 400,
devicePixelRatio: window.devicePixelRatio || 1,
backgroundColor: "#fff",
};
ec_convert(chart, opts, function (dataURL) {
const chartImg = new Image();
chartImg.src = dataURL;
// 获取chart图表的canvas对象
chartImg.onload = function () {
const chartCanvas = document.createElement("canvas");
chartCanvas.width = chartImg.width;
chartCanvas.height = chartImg.height;
const ctx = chartCanvas.getContext("2d");
ctx.drawImage(chartImg, 0, 0, chartImg.width, chartImg.height);
// 绘制整个文档的canvas对象
const allCanvas = document.createElement("canvas");
allCanvas.width = chartImg.width;
allCanvas.height = chartImg.height;
const allCtx = allCanvas.getContext("2d");
// 获取渲染chart图表后的完整容器
const chartContainer = chartCanvas.parentNode;
html2canvas(chartContainer, {
canvas: allCanvas,
backgroundColor: "#fff",
}).then(function () {
// 将整个canvas转成base64的dataURL格式
const allDataURL = allCanvas.toDataURL();
// 使用pdfMake将dataURL转为PDF文档,并将该PDF文档输出到指定位置
const doc = {
content: [{ image: allDataURL }],
};
pdfMake.createPdf(doc).download("export_chart_paper.pdf");
});
};
});
};
该函数将会输出一个名为export_chart_paper.pdf的PDF文件,并将该PDF文件保存至本地。
4. 总结
本文介绍了如何在Taro框架中使用ECharts4Taro3来实现数据可视化的动态导出功能。通过使用echarts-convert插件和pdfmake库,我们可以更方便地将我们的图表导出为图片或PDF文件,以供其他用途使用。同时,ECharts提供了丰富的样式和图表类型,可以满足我们的各种数据可视化需求。