echarts实现一个3d效果柱形图

本文介绍如何利用echarts和echarts-gl在vue3 TypeScript项目中实现3D效果的柱形图。通过数组循环生成多个图表实例,通过重叠和颜色渐变营造3D视觉,具体包括内层背景、顶部圆圈、实际值柱形图及底部元素的设置。
摘要由CSDN通过智能技术生成

效果图:

在这里插入图片描述
思路是:
通过数组循环生成多个echarts实例盒子,生成的柱形图只有一条数据,是由多个图表设置barGap: '-100%'实现重叠,并通过设置柱形图中间颜色到边上颜色的渐变形成类似3d的视觉效果,实际每一个柱形图是由以下几个图表实现的:⛽️

  1. 内层背景的body(bar)
  2. 内层背景的顶部圆圈 (pictorialBar)
  3. 外层绿色的实际值柱形图 (bar)
  4. 外层顶部的圆圈 (pictorialBar)
  5. 外层底部的圆圈 (pictorialBar)
    以及底部的圆盘是一个切图🥺
    在这里插入图片描述

技术栈

vue3 TypeScript echarts
准备:
需要安装echarts和echarts-gl

yarn add echarts
yarn add echarts-gl

代码:
template:

<div class="bottom-bar">
    <div v-for="item, index in barList" :key="index" class="bottom-item">
        <img class="bar-bottom" src="@/assets/images/fiveWater/bar-bottom.png" alt="">
        <div class="top-rate num-18 mgb12">
            {
   {
    item.rate }}%
        </div>
        <div :ref="ref => item.dom = ref" class="bar-box mgb12" />
        <div class="bottom-name pang-18">
            {
   {
    item.name }}
        </div>
    </div>
</div>

javascript:

import 'echarts-gl'
import * as echarts from 'echarts'

const barList = reactive([
	{
    name: '基本能力', rate: 98, total: 100, done: 98, dom: ref() },
	{
    name: '考核情况', rate: 100, total: 100, done: 100, dom: ref() },
	{
    name: '推进情况', rate: 90, total: 100, done: 90, dom: ref() },
])
onMounted(() => {
   
    initBar()
})

const initBar = () => {
   
    data.barList.forEach((item) => {
   
        const series = [item.done]
        const staticData = toRaw(item)
        const output_3DBarCharts = echarts.init(item.dom)
        const options = get3DOptions(staticData, series)
        output_3DBarCharts.setOption(options)
        window.addEventListener('resize', () => {
   
            output_3DBarCharts.
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Freedom风间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值