VUE 以组件形式使用 Echarts

介绍:
ECharts 是一个使用 JavaScript 实现的开源可视化库,涵盖各行业图表,满足各种需求。
ECharts 遵循 Apache-2.0 开源协议,免费商用。
ECharts 兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等)及兼容多种设备,可随时随地任性展示。

第一步:先在main.js引入所需的组件,如下图

import ECharts from 'vue-echarts';
import 'echarts/lib/chart/line'; //折线图
import 'echarts/lib/chart/pie'; //饼形图
import 'echarts/lib/chart/bar'; //柱状图
import 'echarts/lib/component/legend'; //描述
import 'echarts/lib/component/tooltip'; //鼠标提示
import 'echarts/lib/component/title'; //图标题
import 'echarts/lib/component/grid';
Vue.component('v-chart', ECharts);

第二步:根据项目的组件加载方式,编写相对应的组件。

//这里的作用是同一在一个地方加载组件文件,不用每个组件都要写一次加载流程。
import Vue from 'vue'
import {
    importAllVueFile } from '@/utils/common.js'
const routeModules = importAllVueFile(
    require.context('./modules', false, /\.vue$/)
)
routeModules.forEach(({
    camelModuleName, module }) => {
   
    Vue.component("xxx-" + camelModuleName, module)
})

common.js文件:

//读取文件的文件,处理文件名
const jsFileNameRE = /^\.\/([^\s]+)\.js$/
const vueFileNameRE = /^\.\/([^\s]+)\.vue$/
export function importAllJsFile(modulesContext) {
   
    return modulesContext.keys().map((modulesPath) => {
   
        const moduleName = modulesPath.match(
            jsFileNameRE
        )
        return {
   
            moduleName,
            camelModuleName: moduleName[1].replace(
                /-(\w)/g,
                (_, c) => (c ? c.toUpperCase() : '')
            ),
            module: modulesContext(modulesPath).default
        }
    })
}
export function importAllVueFile(modulesContext) {
   
    return modulesContext.keys().map((modulesPath) => {
   
        const moduleName = modulesPath.match(
            vueFileNameRE
        )
        return {
   
            moduleName,
            camelModuleName: moduleName[1].replace(
                /-(\w)/g,
                (_, c) => {
   
                    (c ? c.toUpperCase() : '')
                }
            ),
            module: modulesContext(modulesPath).default
        }
    })
}

下面是我自己写的组件,可能不适用全部情况,按需取

//柱状图
<template>
    <v-chart
        ref="bar_chart"
        style="width: 100%;height: 100%;"
        :options="orgOptions"
        :initOptions="orgOptions"
        :autoresize="true"
    ></v-chart>
</template>

<script>
import colorList from '@/utils/colorList';

export default {
   
    data() {
   
        return {
   
            orgOptions: {
   },
            metricsSub: this.metrics,
            colorList: colorList,
            customColorSub: this.customColor,
            XDimensionSub: this.XDimension,
            legendShowCom: this.legendShow,
        };
    },
    mounted() {
   
        this.orgOptions = {
   
            title: {
   
                show: this.titleShow,
                top: 40,
                left: 60,
                text: '哈哈哈'+ ': ' + this.unitName,
                textStyle: {
   
                    fontStyle: 'lighter',
                },
            },
            tooltip: {
   
                trigger: 'axis',
                axisPointer: {
   
                    type: 'shadow',
                    textStyle: {
   
                        align: 'left',
                        color: '#fff',
                    },
                },
                formatter: function(params, ticket, callback) {
   
                    let newParams;
                    let tooltipString = [];
                    newParams = [...params];
                    newParams.sort((a, b) => {
   
                        return a.seriesName.localeCompare(b.seriesName);
                    });
                    let xLabel = params[0].name+"<br>";
                    tooltipString.push(xLabel);
                    let total = newParams.forEach((p) => {
   
                        const cont =
                            p.marker +
                            ' ' +
                            p.seriesName +
                            ': ' +
                            p.value +
                            '<br/>';
                        tooltipString.push(cont);
                        total = total + p.value;
                    });
                    return tooltipString.join('');
                },
            },
            grid: {
   
                borderWidth: 0,
                top: '18%',
                bottom: '10%',
                width: '85%',
            },
            legend: {
   
                show: this.legendShowCom,
                x: this.barLegendPosition,
                top
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值