Echarts—电量进度条实现(Vue)

效果:
效果图

代码:


<template>

    <div class="chart" id="chart"></div>

</template>

<script>
	import * as echarts from 'echarts';
    export default {

        name : "Bar",

        data() {

            return {

            };

        },

        mounted() {

            this.bar();

        },

        methods: {

            bar() {

                this.myChart = this.$echarts.init(document.getElementById("chart"));

                var data = [100, 200, 300];

                var titlename = ["苹果", "香蕉", "橙子"];

                var option = {

                    backgroundColor:"#17326b",//如果设置图片背景,在外层div设置css样式

                    grid: {

                        left: "10",

                        top: "10",

                        right: "0",

                        bottom: "10",

                        containLabel: true,

                    },

                    xAxis: {

                        type: "value",

                        splitLine: { show: false },

                        axisLabel: { show: false },

                        axisTick: { show: false },

                        axisLine: { show: false },

                    },

                    yAxis: [

                        {

                            type: "category",

                            axisTick: { show: false },

                            axisLine: { show: false },

                            axisLabel: {

                                color: "black",

                                fontSize: 12,

                                textStyle: {

                                    color: "#fff",

                                },

                            },

                            data: titlename,

                            // max:10, 设置y刻度最大值,相当于设置总体行高

                            inverse: true,//横向进度条的关键

                        },

                        {

                            type: "category",

                            axisTick: { show: false },

                            axisLine: { show: false },

                            axisLabel: {

                                color: "black",

                                fontSize: 12,

                                textStyle: {

                                    color: "#fff",

                                },

                            },

                            data: data,

                            // max:10,

                            inverse: true,

                        },

                    ],

                    series: [

                        {

                            name: "条",

                            type: "pictorialBar",

                            symbolRepeat: "fixed",

                            symbolMargin: 1,

                            symbol: "rect",//内部类型(方块,圆,svg,base64图片)

                            symbolClip: true,

                            symbolSize: [6, 8],//进度条的宽高

                            symbolOffset: [5,0],//柱子的位置偏移

                            data: data,

                            z: 2,

                            // barCategoryGap:0,

                            itemStyle: {

                                normal: {

                                    barBorderRadius: 7,

                                    //柱体的颜色

                                    //右,下,左,上(1,0,0,0)表示从正右开始向左渐变

                                    color: function (params) {

                                        //  console.log(params);

                                        var colorList = [

                                            ["#02f0fe", "#02B8EC"],

                                            ["#02f0fe", "#02B8EC"],

                                            ["#02f0fe", "#02B8EC"],

                                            ["#02f0fe", "#02B8EC"],

                                            ["#02f0fe", "#02B8EC"],

                                        ];

                                        var colorItem = colorList[params.dataIndex];

                                        return new that.$echarts.graphic.LinearGradient(

                                            1,

                                            0,

                                            0,

                                            0,

                                            [

                                                {

                                                    offset: 0,

                                                    color: colorItem[0],

                                                },

                                                {

                                                    offset: 1,

                                                    color: colorItem[1],

                                                },

                                            ],

                                            false

                                        );

                                    },

                                },

                            },

                            zlevel: 1,

                        },

                        {

                            name: "进度条背景",

                            type: "bar",

                            barGap: "-100%",

                            barWidth:16,

                            symbolOffset: [5, 0],//柱子的位置

                            data: [100, 100, 100],

                            color: "#2e5384",

                            itemStyle: {

                                normal: {

                                    barBorderRadius:4,

                                },

                            },

                        },

                    ],

                };

                this.myChart.setOption(option);

                //尺寸自适应

                window.addEventListener("resize", () => { this.myChart.resize();});

            },

        }

</script>

<style>

    .panel {

        height: 340px;

        background: rgba(255, 255, 255, 0.04);

        padding: 10px;

    }

</style>

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Vue3中使用Echarts环形进度条,可以按照以下步骤进行操作: 1. 首先,确保你已经安装了ECharts库,可以通过npm或yarn进行安装。 2. 在Vue项目中引入ECharts库。你可以在main.js文件中全局引入ECharts,或者在需要使用环形进度条的组件中引入。 3. 在组件中创建一个canvas元素作为容器来显示环形进度条。可以使用Vue的指令v-if来判断是否显示环形进度条。 4. 定义环形进度条的配置对象,可以在data选项中定义一个progressOptions对象,其中包含了环形进度条的设置。可以引用上述的引用和引用中提到的设置。 5. 在mounted钩子函数中使用ECharts的init方法来初始化环形进度条,并传入之前创建的canvas容器和配置对象。 6. 在Vue的computed属性中定义一个函数,利用该函数来更新环形进度条的数据。可以在函数中修改progressOptions对象的data属性来更新进度条的数值。 7. 在模板中使用canvas元素来展示环形进度条。 下面是一个示例代码: ```vue <template> <div> <canvas v-if="showProgress" ref="progressChart"></canvas> </div> </template> <script> import * as echarts from 'echarts'; export default { data() { return { showProgress: true, progressOptions: { series: [{ type: 'pie', radius: ['60%', '70%'], center: ['50%', '50%'], label: { show: false, }, data: [ { value: 50, name: '完成' }, { value: 50, name: '剩余' }, ], itemStyle: { normal: { color: '#f5f5f5', borderWidth: 10, borderColor: '#f5f5f5', borderType: 'solid', }, emphasis: { color: '#f5f5f5', }, }, }], }, }; }, mounted() { const chart = echarts.init(this.$refs.progressChart); chart.setOption(this.progressOptions); }, }; </script> ``` 这是一个基本的示例,你可以根据你的需求来修改配置对象和模板代码。通过上述步骤,你就可以在Vue3中使用ECharts来创建一个环形进度条了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Echarts 环形进度条 环形图嵌套](https://blog.csdn.net/Windyluna/article/details/120026774)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值