Vue3 中使用 ECharts 图表库

npm 安装 ECharts

npm install echarts --save

vue3 组合式

1. 按需引入 ECharts 图表和组件

<script lang="ts" setup>
    // 引入 echarts 核心模块,核心模块提供了 echarts 使用必须要的接口。
    import * as echarts from "echarts/core";
    // 引入柱状图图表,图表后缀都为 Chart
    import { BarChart } from "echarts/charts";
    // 引入提示框,标题,直角坐标系,数据集,内置数据转换器组件,组件后缀都为 Component
    import { TitleComponent, TooltipComponent, GridComponent, DatasetComponent, TransformComponent } from "echarts/components";
    // 标签自动布局、全局过渡动画等特性
    import { LabelLayout, UniversalTransition } from "echarts/features";
    // 引入 Canvas 渲染器,注意引入 CanvasRenderer 或者 SVGRenderer 是必须的一步
    import { CanvasRenderer } from "echarts/renderers";

    // 注册必须的组件
    echarts.use([
        TitleComponent,
        TooltipComponent,
        GridComponent,
        DatasetComponent,
        TransformComponent,
        BarChart,
        LabelLayout,
        UniversalTransition,
        CanvasRenderer,
    ]);
</script>

2. 添加 ECharts 容器

  • 必需要给盒子设置宽高
<template>
    <!-- 添加一个div盒子,用于创建 echarts 图表,必须要设置宽高-->
    <div class="main" ref="chartDom"></div>
</template>

<script lang="ts" setup>
    // 创建 echarts 容器
    const chartDom = ref(null);
</script>

<style lang="scss" scoped>
    .main {
        width: 100%;
        height: 100%;
        background: #000;
    }
</style>

3. 配置 ECharts 图表参数

  • series 数组长度要与 legend 数组长度一致
  • series 中 data 中数组长度要与 xAxis 中的 data 中的数组长度一致
  • 详见 ECharts 官网文档中的配置项手册
  • 网址:https://echarts.apache.org/v4/zh/option.html#title
<script lang="ts" setup>
    import { reactive } from "vue";
    const option = reactive({
        // 标题
        title: {
            text: "ECharts 入门示例",
        },
        // 提示框组件
        tooltip: {},
        // 图例组件
        legend: {
            data: ["销量"],
        },
        // x 轴
        xAxis: {
            data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"],
        },
        // y 轴
        yAxis: {},
        // 系列列表
        series: [
            {
                // 该系列表示的信息
                name: "销量",
                // 图标类型
                type: "bar",
                // 该 data 中数组长度要与 xAxis 中的 data 中的数组长度一致
                data: [5, 20, 36, 10, 10, 20],
            },
        ],
    });
</script>

4. 创建 ECharts 初始化函数

  • 通过监听浏览器 resize 事件,再调用 myChart.resize() 方法,可实现 ECharts 图表的自适应大小
<script lang="ts" setup>
    // echarts初始化函数
    const init = () => {
        // 基于准备好的dom,初始化echarts实例
        const myChart = echarts.init(chartDom.value);

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

        //监听页面的 resize 事件获取浏览器大小改变的事件,调用 echartsInstance.resize 改变图表的大小
        window.addEventListener("resize", () => {
            // 调用 echartsInstance.resize 改变图表的大小
            myChart.resize();
        });
    };
</script>

5. 初始化 ECharts 图表

  • 需要在 onMounted 生命周期钩子中使用
<script lang="ts" setup>
    // 页面加载完成时,初始化echarts实例
    onMounted(() => {
        init();
    });
</script>

6. 完整代码示例

<template>
    <div class="main" ref="chartDom"></div>
</template>
<script lang="ts" setup>
    import { ref, reactive, onMounted } from "vue";
    // 引入 echarts 核心模块,核心模块提供了 echarts 使用必须要的接口。
    import * as echarts from "echarts/core";
    // 引入柱状图图表,图表后缀都为 Chart
    import { BarChart } from "echarts/charts";
    // 引入提示框,标题,直角坐标系,数据集,内置数据转换器组件,组件后缀都为 Component
    import { TitleComponent, TooltipComponent, GridComponent, DatasetComponent, TransformComponent, LegendComponent } from "echarts/components";
    // 标签自动布局、全局过渡动画等特性
    import { LabelLayout, UniversalTransition } from "echarts/features";
    // 引入 Canvas 渲染器,注意引入 CanvasRenderer 或者 SVGRenderer 是必须的一步
    import { CanvasRenderer } from "echarts/renderers";

    // 注册必须的组件
    echarts.use([
        TitleComponent,
        TooltipComponent,
        GridComponent,
        DatasetComponent,
        TransformComponent,
        LegendComponent,
        BarChart,
        LabelLayout,
        UniversalTransition,
        CanvasRenderer,
    ]);

    // 创建echarts容器
    const chartDom = ref(null);

    // 指定图表的配置项和数据
    const option = reactive({
        // 标题
        title: {
            text: "ECharts 入门示例",
        },
        // 提示框组件
        tooltip: {},
        // 图例组件
        legend: {
            data: ["销量"],
        },
        // x 轴
        xAxis: {
            data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"],
        },
        // y 轴
        yAxis: {},
        // 系列列表
        series: [
            {
                // 该系列表示的信息
                name: "销量",
                // 图标类型
                type: "bar",
                // 该 data 中数组长度要与 xAxis 中的 data 中的数组长度一致
                data: [5, 20, 36, 10, 10, 20],
            },
        ],
    });

    // echarts初始化函数
    const init = () => {
        // 基于准备好的dom,初始化echarts实例
        const myChart = echarts.init(chartDom.value);
        // 使用刚指定的配置项和数据显示图表。
        myChart.setOption(option);
        //监听页面的 resize 事件获取浏览器大小改变的事件,调用 echartsInstance.resize 改变图表的大小
        window.addEventListener("resize", () => {
            // 调用 echartsInstance.resize 改变图表的大小
            myChart.resize();
        });
    };

    // 页面加载完成时,初始化echarts实例
    onMounted(() => {
        init();
    });
</script>

<style lang="scss" scoped>
    .main {
        width: 100%;
        height: 100%;
        background: #000;
    }
</style>

vue3 选项式

1. 按需引入 ECharts 图表和组件

<script lang="ts">
    // 引入 echarts 核心模块,核心模块提供了 echarts 使用必须要的接口。
    import * as echarts from "echarts/core";
    // 引入柱状图图表,图表后缀都为 Chart
    import { BarChart } from "echarts/charts";
    // 引入提示框,标题,直角坐标系,数据集,内置数据转换器组件,组件后缀都为 Component
    import { TitleComponent, TooltipComponent, GridComponent, DatasetComponent, TransformComponent, LegendComponent } from "echarts/components";
    // 标签自动布局、全局过渡动画等特性
    import { LabelLayout, UniversalTransition } from "echarts/features";
    // 引入 Canvas 渲染器,注意引入 CanvasRenderer 或者 SVGRenderer 是必须的一步
    import { CanvasRenderer } from "echarts/renderers";

    // 注册必须的组件
    echarts.use([
        TitleComponent,
        TooltipComponent,
        GridComponent,
        DatasetComponent,
        TransformComponent,
        LegendComponent,
        BarChart,
        LabelLayout,
        UniversalTransition,
        CanvasRenderer,
    ]);
</script>

2. 添加 ECharts 容器

  • 必需要给盒子设置宽高
<template>
    <div class="main" ref="chartDom"></div>
</template>
<script lang="ts">
    export default {};
</script>
<style lang="scss" scoped>
    .main {
        width: 100%;
        height: 100%;
        background: #000;
    }
</style>

3. 配置 ECharts 图表参数

  • series 数组长度要与 legend 数组长度一致
  • series 中 data 中数组长度要与 xAxis 中的 data 中的数组长度一致
  • 详见 ECharts 官网文档中的配置项手册
  • 网址:https://echarts.apache.org/v4/zh/option.html#title
<script lang="ts">
    export default {
        data() {
            return {
                option: {
                    // 标题
                    title: {
                        text: "ECharts 入门示例",
                    },
                    // 提示框组件
                    tooltip: {},
                    // 图例组件
                    legend: {
                        data: ["销量"],
                    },
                    // x 轴
                    xAxis: {
                        data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"],
                    },
                    // y 轴
                    yAxis: {},
                    // 系列列表
                    series: [
                        {
                            // 该系列表示的信息
                            name: "销量",
                            // 图标类型
                            type: "bar",
                            // 该 data 中数组长度要与 xAxis 中的 data 中的数组长度一致
                            data: [5, 20, 36, 10, 10, 20],
                        },
                    ],
                },
            };
        },
    };
</script>

4. 创建 ECharts 初始化函数

  • 通过监听浏览器 resize 事件,再调用 myChart.resize() 方法,可实现 ECharts 图表的自适应大小
<script lang="ts">
    export default {
        methods: {
            // echarts初始化函数
            init() {
                // 基于准备好的dom,初始化echarts实例
                const myChart = echarts.init(this.$refs.chartDom);
                // 使用刚指定的配置项和数据显示图表。
                myChart.setOption(this.option);
                //监听页面的 resize 事件获取浏览器大小改变的事件,调用 echartsInstance.resize 改变图表的大小
                window.addEventListener("resize", () => {
                    // 调用 echartsInstance.resize 改变图表的大小
                    myChart.resize();
                });
            },
        },
    };
</script>

5. 初始化 ECharts 图表

  • 需要在 mounted 生命周期钩子中使用
<script lang="ts">
    export default {
        mounted() {
            this.init();
        },
    };
</script>

6.完整代码示例

<template>
    <div class="main" ref="chartDom"></div>
</template>
<script lang="ts">
    // 引入 echarts 核心模块,核心模块提供了 echarts 使用必须要的接口。
    import * as echarts from "echarts/core";
    // 引入柱状图图表,图表后缀都为 Chart
    import { BarChart } from "echarts/charts";
    // 引入提示框,标题,直角坐标系,数据集,内置数据转换器组件,组件后缀都为 Component
    import { TitleComponent, TooltipComponent, GridComponent, DatasetComponent, TransformComponent, LegendComponent } from "echarts/components";
    // 标签自动布局、全局过渡动画等特性
    import { LabelLayout, UniversalTransition } from "echarts/features";
    // 引入 Canvas 渲染器,注意引入 CanvasRenderer 或者 SVGRenderer 是必须的一步
    import { CanvasRenderer } from "echarts/renderers";

    // 注册必须的组件
    echarts.use([
        TitleComponent,
        TooltipComponent,
        GridComponent,
        DatasetComponent,
        TransformComponent,
        LegendComponent,
        BarChart,
        LabelLayout,
        UniversalTransition,
        CanvasRenderer,
    ]);
    export default {
        data() {
            return {
                option: {
                    // 标题
                    title: {
                        text: "ECharts 入门示例",
                    },
                    // 提示框组件
                    tooltip: {},
                    // 图例组件
                    legend: {
                        data: ["销量"],
                    },
                    // x 轴
                    xAxis: {
                        data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"],
                    },
                    // y 轴
                    yAxis: {},
                    // 系列列表
                    series: [
                        {
                            // 该系列表示的信息
                            name: "销量",
                            // 图标类型
                            type: "bar",
                            // 该 data 中数组长度要与 xAxis 中的 data 中的数组长度一致
                            data: [5, 20, 36, 10, 10, 20],
                        },
                    ],
                },
            };
        },
        methods: {
            // echarts初始化函数
            init() {
                // 基于准备好的dom,初始化echarts实例
                const myChart = echarts.init(this.$refs.chartDom);
                // 使用刚指定的配置项和数据显示图表。
                myChart.setOption(this.option);
                //监听页面的 resize 事件获取浏览器大小改变的事件,调用 echartsInstance.resize 改变图表的大小
                window.addEventListener("resize", () => {
                    // 调用 echartsInstance.resize 改变图表的大小
                    myChart.resize();
                });
            },
        },
        mounted() {
            this.init();
        },
    };
</script>

<style lang="scss" scoped>
    .main {
        width: 100%;
        height: 100%;
        background: #000;
    }
</style>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue 使用 Echarts 绘制自定义图表组件可以按照以下步骤进行: 1. 首先,确保已经安装了 echarts 。可以使用 npm 或 yarn 进行安装: ``` npm install echarts --save ``` 2. 创建一个 Vue 组件,用于包含 Echarts 图表。可以命名为 `EchartsChart.vue`。 ```html <template> <div :ref="chartRef" class="echarts-chart"></div> </template> <script> import echarts from 'echarts'; export default { props: ['chartData'], data() { return { chartRef: 'echartsChart', chartInstance: null, }; }, mounted() { this.chartInstance = echarts.init(this.$refs[this.chartRef]); this.renderChart(); }, methods: { renderChart() { // 使用 chartData 配置图表数据和样式 this.chartInstance.setOption(this.chartData); }, }, beforeDestroy() { if (this.chartInstance) { this.chartInstance.dispose(); // 销毁图表实例,释放资源 } }, }; </script> <style scoped> .echarts-chart { width: 100%; height: 400px; /* 根据需求设置图表高度 */ } </style> ``` 在上面的示例,我们创建了一个 `EchartsChart` 组件,接受一个 `chartData` 属性,用于配置图表的数据和样式。在 `mounted` 钩子,我们初始化了 Echarts 实例,并在 `renderChart` 方法使用 `setOption` 方法渲染图表。在组件销毁前,我们通过调用 `dispose` 方法销毁图表实例,释放资源。 3. 在使用自定义图表组件的父组件,引入并使用 `EchartsChart` 组件。可以通过传递 `chartData` 属性来配置图表。 ```html <template> <div> <echarts-chart :chartData="chartData"></echarts-chart> </div> </template> <script> import EchartsChart from '@/components/EchartsChart.vue'; export default { components: { EchartsChart, }, data() { return { chartData: { // 配置图表的数据和样式 }, }; }, }; </script> ``` 在上面的示例,我们在父组件引入了 `EchartsChart` 组件,并通过 `chartData` 属性配置图表的数据和样式。 你可以根据自己的需求在 `chartData` 配置图表的相关数据,例如 `title`、`tooltip`、`xAxis`、`yAxis`、`series` 等。具体的配置可以参考 Echarts 的文档。 希望这个示例能够帮助你创建自定义的 Echarts 图表组件

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值