echats

echarts图表两种下载图片的方法

2022-10-26  本文已影响0人  Frank_Fang

echarts图表两种下载图片的方法:
1.使用 toolbox里saveAsImage方法;
2.使用getDataURL方法获取base64图片,然后下载图片。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>ECharts</title>
    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
</head>
<body>
    <div id="app">
        <el-button type="primary" size="small" style="margin-bottom: 30px;" @click="downloadChart">下载echarts图片
        </el-button>
        <div id="main" style="width: 600px;height:400px;"></div>
    </div>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.13/vue.js"></script>
    <script src="https://unpkg.com/element-ui/lib/index.js"></script>
    <script src="https://cdn.bootcss.com/echarts/4.7.0/echarts-en.js"></script>
    <script>
        new Vue({
            el: "#app",
            data() {
                return {
                    myChart: null
                }
            },
            methods: {
                downloadUrlFile(url, fileName) {
                    const a = document.createElement('a')
                    document.body.appendChild(a)
                    a.style = 'display: none'
                    a.href = url
                    if (fileName) {
                        a.download = fileName
                    }
                    a.click()
                    window.URL.revokeObjectURL(url)
                },
                downloadChart() {
                    // 获取base64图片
                    const chartImgUrl = this.myChart.getDataURL({
                        pixelRatio: 2,
                        backgroundColor: '#fff'
                    })
                    console.log(chartImgUrl)
                    // 下载base64图片
                    this.downloadUrlFile(chartImgUrl, 'ECharts 2倍图')
                }
            },
            mounted() {
                // 基于准备好的dom,初始化echarts实例
                this.myChart = echarts.init(document.getElementById('main'));
                // 指定图表的配置项和数据
                var option = {
                    color: ['#0099ff', '#bbbbbb'],
                    title: {
                        text: 'ECharts 示例'
                    },
                    tooltip: {},
                    legend: {
                        data: ['已到', '未到']
                    },
                    grid: {
                        left: '3%',
                        right: '4%',
                        bottom: '3%',
                        containLabel: true
                    },
                    toolbox: {
                        feature: {
                            saveAsImage: {}
                        }
                    },
                    xAxis: {
                        type: 'category',
                        data: ["渠道one", "渠道two", "渠道three", "渠道four", "渠道five", "渠道six"]
                    },
                    yAxis: [{
                        type: 'value'
                    }],
                    series: [{
                        name: '已到',
                        type: 'bar',
                        stack: '渠道',
                        data: [10, 20, 32, 10, 14, 28]
                    },
                    {
                        name: '未到',
                        type: 'bar',
                        stack: '渠道',
                        data: [5, 10, 26, 8, 10, 20]
                    }
                    ]
                };
                // 使用刚指定的配置项和数据显示图表。
                this.myChart.setOption(option);
            }
        })
    </script>
</body>
</html>
上一篇下一篇

猜你喜欢

热点阅读