echarts 仪表盘根据点击的刻度重新设置值

在这里插入图片描述

1 更具点击获取的坐标 event.offsetY , event.offsetX
2 通过中心点坐标差,获取角的度数,然后取180度的占比,最后✖️总值=刻度值.
3 然后在赋值给data
例子 : 角的度数是30度 30/180*30 = 5 则刻度值指向5
角度度数怎么求? (Math.atan2(y - event.offsetY, x - event.offsetX) * 180) / Math.PI在这里插入图片描述

<!--
 * @Author:  215683509@qq.com
 * @Date: 2024-05-08 14:07:53
 * @LastEditors: 215683509@qq.com
 * @LastEditTime: 2024-05-30 15:27:25
 * @Description: 测试
-->
<template>
  <div class="index-view">
    <div @touchend="handleTouchEnd" id="main"></div>
  </div>
</template>
<script>
import { mapGetters, mapMutations } from 'vuex'
import Header from '@/components/Header'
import Empty from './empty.vue'
import { getImgUrl } from '@/utils/auth.js'
import * as echarts from 'echarts'

export default {
  components: {
    Header,
    Empty,
  },
  data() {
    return {
      dataValue: 0,
      data1: 0,
    }
  },
  mounted() {
    this.initChart()

    // 假设你已经有了一个echarts实例
    // 监听ECharts的touch事件
    // 监听touchmove事件
    let myChart = echarts.init(document.getElementById('main'))
    myChart.getZr().on('click', (event) => {
      this.setChart(event)
    })
  },
  computed: {
    option() {
      return {
        series: [
          {
            type: 'gauge',
            center: ['50%', '60%'],
            startAngle: 200,
            endAngle: -20,
            min: 0,
            max: 30,
            splitNumber: 12,
            itemStyle: {
              color: '#FFAB91',
            },
            progress: {
              show: true,
              width: 30,
            },
            pointer: {
              show: false,
            },
            axisLine: {
              lineStyle: {
                width: 30,
              },
            },
            axisTick: {
              distance: -45,
              splitNumber: 5,
              lineStyle: {
                width: 2,
                color: '#999',
              },
            },
            splitLine: {
              distance: -52,
              length: 14,
              lineStyle: {
                width: 3,
                color: '#999',
              },
            },
            axisLabel: {
              distance: -20,
              color: '#999',
              fontSize: 20,
            },
            anchor: {
              show: false,
            },
            title: {
              show: false,
            },
            // detail: {formatter:'{value}'},
            data: [{ value: this.dataValue, name: 'Status' }],
            detail: {
              valueAnimation: true,
              width: '60%',
              lineHeight: 40,
              borderRadius: 8,
              offsetCenter: [0, '-15%'],
              fontSize: 60,
              fontWeight: 'bolder',
              formatter: '{value} °C',
              color: 'inherit',
            },
          },
          {
            type: 'gauge',
            center: ['50%', '60%'],
            startAngle: 200,
            endAngle: -20,
            min: 0,
            max: 30,
            itemStyle: {
              color: '#FD7347',
            },
            progress: {
              show: true,
              width: 8,
            },
            pointer: {
              show: false,
            },
            axisLine: {
              show: false,
            },
            axisTick: {
              show: false,
            },
            splitLine: {
              show: false,
            },
            axisLabel: {
              show: false,
            },
            detail: {
              show: false,
            },
            data: [
              {
                value: this.data1,
              },
            ],
          },
        ],
      }
    },
  },
  methods: {
    setChart(event) {
      let x = 200
      let y = 295
      // 计算角度
      let currentAngle =
        (Math.atan2(y - event.offsetY, x - event.offsetX) * 180) / Math.PI
     //求值
      this.dataValue = ((currentAngle / 180) * 30).toFixed(0)
      this.data1 = ((currentAngle / 180) * 30).toFixed(0)
      //渲染
      this.initChart()
    },
    initChart() {
      var chartDom = document.getElementById('main')
      var myChart = echarts.init(chartDom)
      var option
      option = this.option
      option && myChart.setOption(option)
    },
  },
}
</script>
<style scoped>
.index-view {
  height: 500px;
  background-color: bisque;
}
#main {
  height: 400px;
  width: 400px;
  border: 1px solid red;
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/682784.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

以sqlilabs靶场为例,讲解SQL注入攻击原理【42-50关】

【Less-42】 使用 or 11 -- aaa 密码&#xff0c;登陆成功。 找到注入点&#xff1a;密码输入框。 解题步骤&#xff1a; # 获取数据库名 and updatexml(1,concat(0x7e,(select database()),0x7e),1) -- aaa# 获取数据表名 and updatexml(1,concat(0x7e,(select group_conca…

Siemens-NXUG二次开发-创建倒斜角特征、边倒圆角特征、设置对象颜色、获取面信息[Python UF][20240605]

Siemens-NXUG二次开发-创建倒斜角特征、边倒圆角特征、设置对象颜色、获取面信息[Python UF][20240605] 1.python uf函数1.1 NXOpen.UF.Modeling.AskFaceData1.2 NXOpen.UF.Modeling.CreateChamfer1.3 NXOpen.UF.ModlFeatures.CreateBlend1.4 NXOpen.UF.Obj.SetColor 2.实体目标…

计算机组成原理-唐朔飞 概念总结(概论 总线 存储器部分)

计算机系统由“硬件”“软件”两大部分组成&#xff0c;软件通常存放在主存或辅存 软件分为系统软件和应用软件 1.1.2 计算机系统的层次结构 源程序&#xff1a;用户用高级语言编写的程序 目标程序&#xff1a;机器能识别的机器语言程序 实际机器&#xff1a;直接执行机器…

C++缺省参数函数重载

缺省参数 大家知道什么是备胎吗&#xff1f; C中函数的参数也可以配备胎。 3.1缺省参数概念 缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时&#xff0c;如果没有指定实参则采用该默认值&#xff0c;否则使用指定的实参。 void TestFunc(int a 0…

OPPO 文件传输 - 将文件从 OPPO 手机传输到 PC 的 5 种方法

OPPO手机以其出色的拍照功能而闻名&#xff0c;尤其是新推出的OPPO Find X2系列&#xff0c;它配备了高清前置镜头和超夜景模式&#xff0c;让您轻松拍出精彩瞬间。当您需要将这些照片或其他文件从OPPO手机传输到PC时&#xff0c;以下是五种简便的方法。 第 1 部分&#xff…

引擎:UI

一、控件介绍 Button 按钮 创建一个按钮 按钮禁用 精灵模式 颜色模式 缩放模式 绑定点击事件 EditBox 输入框 Layout 布局 支持水平排列、垂直排列、背包排列 PageView 页面视图 ProgressBar 进度条 RichText 富文本 绑定点击事件 事件可以被其它标签包裹 图文混排 Scroll…

揭秘AI 原生应用技术栈

一次性把“AI 原生应用技术栈”说明白 AI热潮持续&#xff0c;厂商努力推动有价值的应用涌现&#xff0c;并打造服务AI原始应用的平台产品。本文精简介绍业界最新的AI原生应用技术栈&#xff0c;让您迅速把握前沿科技脉搏。 整体架构 AI技术栈逻辑图精简呈现&#xff0c;多层…

nexus搭建npm前端项目的私服

一、为什么要搭建私库 节省外网带宽加速maven构建部署第三方构件&#xff08;特别是无法从公共仓库下载的构件&#xff09;提高稳定性&#xff08;内网部署&#xff0c;更少地依赖外网&#xff09;降低中央仓库的负荷 构件&#xff0c;好比我们的藏书&#xff0c;去书店或商城…

Python 全栈系列249 IO并发:异步、线程与协程

说明 很久没有关注这方面的问题了&#xff0c;平时大部分时候还是做批量操作 。在这种情况下(CPU密集),异步、协程这些意义就不大了&#xff0c;甚至可能进一步拖慢处理时间。 但是在IO这一块的零碎处理是比较重要的&#xff0c;可以更快&#xff0c;且更省资源。很早的时候&…

什么是通配符SSL证书?要怎么申请?

通配符SSL证书的作用主要是为了方便管理和加密具有多个子域名的网站。它能够保护一个主域名及其所有的同级子域名&#xff0c;无论子域名的数量多少或名称如何变化。使用一个通配符证书&#xff0c;你可以为像 *.example.com 这样的设置加密&#xff0c;这样不论是 blog.exampl…

Mysql:通过一张表里的父子级,递归查询并且分组分级

表&#xff1a;gc_jzst_single_base 需求&#xff1a;要求返回这张表里符合条件的数据&#xff0c;且有父子级关系的&#xff0c;展示为同一组且分级&#xff0c;给后续业务调用 代码 WITH RECURSIVE t1 AS (SELECTsingle_id,old_build_single_id,single_name,bulid_code,1 A…

运维开发介绍

目录 1.什么是运维开发 2.作用 3.优点 4.缺点 5.应用场景 5.1.十个应用场景 5.2.网站和Web应用程序 6.案例 7.小结 1.什么是运维开发 运维开发&#xff08;DevOps&#xff09;是一种结合软件开发&#xff08;Development&#xff09;与信息技术运维&#xff08;Opera…

从分布式训练到大模型训练

要了解大模型训练难&#xff0c;我们得先看看从传统的分布式训练&#xff0c;到大模型的出现&#xff0c;需要大规模分布式训练的原因。接着第二点去了解下大规模训练的挑战。 从分布式训练到大规模训练 常见的训练方式是单机单卡&#xff0c;也就是一台服务器配置1块AI芯片&a…

地球科学SCI期刊,中科院2区,IF=14.6,自引率低,无预警风险!

一、期刊名称 IEEE Geoscience and Remote Sensing Magazine 二、期刊简介概况 期刊类型&#xff1a;SCI 学科领域&#xff1a;地球科学 影响因子&#xff1a;14.6 中科院分区&#xff1a;2区 三、期刊征稿范围 IEEE地球科学和遥感杂志向读者介绍IEEE GRS协会及其技术委员…

谢宁DOE培训的奇妙之旅:从陌生到熟练

在充满挑战与机遇的现代社会&#xff0c;不断提升自我&#xff0c;掌握新的技能和知识&#xff0c;成为了我们追求进步的重要途径。而对于我来说&#xff0c;参加谢宁DOE培训&#xff0c;无疑是我职业生涯中的一次重要抉择。这次培训让我从对谢宁DOE陌生到熟练&#xff0c;经历…

618电视盒子哪个好?经销商总结热销电视盒子品牌排行榜

电视盒子是目前热度最高的数码产品&#xff0c;大家都在讨论电视盒子的资源问题&#xff0c;究竟电视盒子还值不值得入手&#xff1f;电视盒子哪个好&#xff1f;电视盒子的功能并没有受到影响&#xff0c;依然是不可缺少的&#xff0c;本期我要给大家盘点实体店销量最好的电视…

雅欣控制HALL IC 产品选型手册,选择您的专属霍尔芯片(霍尔产品主要包括远翔FD,FS全系列,MST全系列霍尔)

HALLICs 应用领域 Applications 应用案例 雅欣为各个应用场景匹配专属HALL元器件 合作伙伴 Partners

Servlet详解(下)

目录 一、Servlet详解1.1、核心接口和类1.1.1、Servlet接口1.1.2、GenericServlet1.1.3、HttpServlet(推荐) 1.2、两种配置方法1.2.1、使用web.xml1.2.2、使用注解 二、Servlet应用2.1、request对象2.2、request主要方法2.2、response对象2.3、response主要方法 三、转发与重定…

linuxDNS域名解析

文章目录 DNS 是域名系统的简称正向解析反向解析主从服务器解析bond网卡 DNS 是域名系统的简称 域名和IP地址之间的映射关系 互联网中&#xff0c;IP地址是通信的唯一标识&#xff0c;逻辑地址 访问网站 域名解析的目的就是为了实现&#xff0c;访问域名就等于访问IP地址 …

作业-day-240605

思维导图 C编程 设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重 再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1 设计这两个类的构造函数、析构函数。 #include <iostream>using namespace std;class Per{ private:str…