当前位置: 首页 > news >正文

如何在VUE框架下渲染出来一个水球图

在 Vue 框架下,使用 ECharts 渲染水球图通常需要借助 echarts-liquidfill 插件,该插件专门用于创建水球图效果。


1. 安装依赖

首先,确保你已经安装了 ECharts 和 echarts-liquidfill

npm install echarts echarts-liquidfill

2. 在 Vue 组件中使用

在 Vue 组件中,可以这样使用 ECharts 渲染水球图:

<template>
  <d2-container>
  <div ref="chart" class="chart-container"></div>
</d2-container>
</template>

<script>
import * as echarts from 'echarts';
import 'echarts-liquidfill';

export default {
  name: 'LiquidFillChart',
  mounted() {
    this.initChart();
  },
  methods: {
    initChart() {
      const chartDom = this.$refs.chart;
      const myChart = echarts.init(chartDom);

      const option = {
        series: [{
          type: 'liquidFill',
          data: [0.6, 0.5, 0.4, 0.3], // 水球图的数据,表示填充的比例
          radius: '80%', // 水球图的半径
          outline: {
            show: false // 是否显示外边框
          },
          label: {
            show: true,
            formatter: (param) => {
              return `${(param.value * 100).toFixed(0)}%`; // 显示百分比
            },
            fontSize: 28,
            color: '#fff',
            fontWeight: 'bold',
            textShadow: '2px 2px 4px rgba(0, 0, 0, 0.5)' // 添加文字阴影
          },
          backgroundStyle: {
            color: '#E6F7FF', // 背景颜色
            borderWidth: 10,
            borderColor: '#1890FF',
            shadowBlur: 10,
            shadowColor: 'rgba(0, 0, 0, 0.3)', // 背景阴影
            shadowOffsetX: 5,
            shadowOffsetY: 5
          },
          itemStyle: {
            color: {
              type: 'linear',
              x: 0,
              y: 0,
              x2: 0,
              y2: 1,
              colorStops: [{
                offset: 0, color: '#1890FF' // 渐变起始颜色
              }, {
                offset: 1, color: '#0050B3' // 渐变结束颜色
              }]
            },
            shadowBlur: 10,
            shadowColor: 'rgba(0, 0, 0, 0.5)', // 水球阴影
            shadowOffsetX: 5,
            shadowOffsetY: 5
          },
          emphasis: {
            itemStyle: {
              opacity: 0.8
            }
          }
        }]
      };

      myChart.setOption(option);
    }
  }
};
</script>

<style scoped>
.chart-container {
  width: 98%;
  height: 400px;
  background: #f0f0f0; /* 背景颜色 */
  border-radius: 15px; /* 圆角 */
  box-shadow: 5px 5px 15px rgba(0, 0, 0, 0.2); /* 容器阴影 */
  padding: 20px; /* 内边距 */
}
</style>

3. 说明

  • type: 'liquidFill':指定渲染水球图。
  • data: [0.6]:表示水球的填充程度,支持多个值创建波浪效果,如 [0.6, 0.55, 0.5]
  • radius: '80%':控制水球大小。
  • outline: { show: false }:关闭外边框。
  • backgroundStyle.color:设置水球背景色。
  • label:显示水球内的数值,并调整字体颜色和大小。

4. 动态数据

如果你想动态修改水球图的值,例如从后端获取数据,可以在 data 里添加 value 变量,然后在 watch 里监听它的变化:

<template>
  <div ref="chart" style="width: 300px; height: 300px;"></div>
</template>

<script>
import * as echarts from 'echarts';
import 'echarts-liquidfill';

export default {
  data() {
    return {
      value: 0.6 // 初始值
    };
  },
  mounted() {
    this.initChart();
  },
  watch: {
    value(newVal) {
      this.updateChart(newVal);
    }
  },
  methods: {
    initChart() {
      this.myChart = echarts.init(this.$refs.chart);
      this.setChartOption();
    },
    setChartOption() {
      const option = {
        series: [
          {
            type: 'liquidFill',
            data: [this.value],
            radius: '80%',
            outline: { show: false },
            label: { fontSize: 20, color: '#000' }
          }
        ]
      };
      this.myChart.setOption(option);
    },
    updateChart(newValue) {
      this.myChart.setOption({
        series: [{ data: [newValue] }]
      });
    }
  }
};
</script>

然后你可以在 methods 里动态修改 this.value,比如从后端接口获取数据。


5. 总结

  • echarts-liquidfill 用于创建水球图,数据范围为 0-1。
  • 可以自定义水球大小、颜色、边框等样式。
  • 通过 watch 监听数据变化,实现动态更新水球图。

在这里插入图片描述


文章转载自:

http://CJlgqd6w.pnbLs.cn
http://41jJtZZp.pnbLs.cn
http://x3CisN6y.pnbLs.cn
http://MUJVSYEm.pnbLs.cn
http://V5A0DXuq.pnbLs.cn
http://AyVfDvHZ.pnbLs.cn
http://RsqVA9Yy.pnbLs.cn
http://gKzYCbyk.pnbLs.cn
http://I5NEqDIB.pnbLs.cn
http://kbPsRNXz.pnbLs.cn
http://plYHVuqd.pnbLs.cn
http://PwEHsEh4.pnbLs.cn
http://RT4uLP40.pnbLs.cn
http://0TKMpI3l.pnbLs.cn
http://vSNNUfC9.pnbLs.cn
http://EfuMj0AJ.pnbLs.cn
http://0Ys6qFVV.pnbLs.cn
http://y42DWts4.pnbLs.cn
http://7sF9Vt88.pnbLs.cn
http://Gp3vENSG.pnbLs.cn
http://0YdD1MpF.pnbLs.cn
http://rV3Kbi0u.pnbLs.cn
http://39jIGTk3.pnbLs.cn
http://a656aVeR.pnbLs.cn
http://MEDxtPlX.pnbLs.cn
http://q7HHbuYh.pnbLs.cn
http://xO8ORfmK.pnbLs.cn
http://SjM5B3Ic.pnbLs.cn
http://9T0frMxL.pnbLs.cn
http://usFFfFz3.pnbLs.cn
http://www.dtcms.com/a/45489.html

相关文章:

  • MongoDB快速入门
  • 大白话React第十章React 前沿技术在企业级应用中的深度实践
  • 从FLM获取算法进行DAP脱机烧录踩坑解决总结
  • 市场成本趋势-新指标-找到成本高度集中处布局-抓主升或趋势行情,识别出货还是洗盘
  • (十 四)趣学设计模式 之 策略模式!
  • Mysql-如何理解事务?
  • JDBC 进阶
  • vulnhub靶场之【kioptrix-5】靶机
  • 纯电动商用车核心性能评价方法实现
  • uniapp 测试 IPA 包安装到测试 iPhone
  • 如何使用Docker搭建哪吒监控面板程序
  • java2025热点面试题之springmvc
  • C# 类型转换
  • vue3:四嵌套路由的实现
  • 学Java第三十天------------多态
  • 20250226-代码笔记05-class CVRP_Decoder
  • 【无人机】无人机通信模块,无人机图数传模块的介绍,数传,图传,图传数传一体电台,
  • 什么是HA
  • keil主题(vscode风格)
  • ClickHouse
  • P1123 取数游戏
  • 实战案例:排查 Java 应用 CPU 飙高问题
  • 自由学习记录(40)
  • HFSS 仿真学习1 K波段定向耦合器
  • JAVA面试_进阶部分_netty面试题
  • 【Java】多线程篇 —— 多线程的基本使用
  • 58、深度学习-自学之路-自己搭建深度学习框架-19、RNN神经网络梯度消失和爆炸的原因(从公式推导方向来说明),通过RNN的前向传播和反向传播公式来理解。
  • 商城源码的框架
  • JAVA学习笔记038——bean的概念和常见注解标注
  • 计算机毕业设计SpringBoot+Vue.js体育馆使用预约平台(源码+文档+PPT+讲解)