Ant Design Charts 仪表盘配置属性结合案例详细说明_ant design charts仪表盘-程序员宅基地

技术标签: 工作记录  echarts  reactjs  javascript  

本次案例为仪表板,最终成品样式如下,案例种用到仪表盘分大部分属性,每个属性都注释说明作用。成品效果如下

 使用方法如下

import { Gauge, G2 } from "@ant-design/plots";

const { registerShape, Util } = G2; 

// 自定义指针 Shape 部分 在下面 indicator.shape 中使用,如不需要可删除下面的  indicator.shape 和 registerShape 函数。

  registerShape("point", "custom-gauge-indicator", {
    draw(cfg, container) {
      // 使用 customInfo 传递参数
      const { indicator, defaultColor } = cfg.customInfo;
      const { pointer, pin } = indicator;

      const group = container.addGroup();
      // 获取极坐标系下画布中心点
      const center = this.parsePoint({ x: 0, y: 0 });
      console.log(center);
      // 设置 pin 指针的圆盘的样式
      if (pin) {
        // 直接使用配置里面的pin样式
        group.addShape("circle", {
          name: "pin-outer",
          attrs: {
            x: center.x,
            y: center.y,
            ...pin.style,
          },
        });
      }
      // 绘制指针
      if (pointer) {
        const { startAngle, endAngle } = Util.getAngle(cfg, this.coordinate);
        const radius = this.coordinate.getRadius();
        const midAngle = (startAngle + endAngle) / 2;
        const { x: x1, y: y1 } = Util.polarToCartesian(
          center.x,
          center.y,
          radius / 15,
          midAngle + 1 / Math.PI
        );
        const { x: x2, y: y2 } = Util.polarToCartesian(
          center.x,
          center.y,
          radius / 15,
          midAngle - 1 / Math.PI
        );
        const { x, y } = Util.polarToCartesian(
          center.x,
          center.y,
          radius * 0.5,
          midAngle
        );
        const { x: x0, y: y0 } = Util.polarToCartesian(
          center.x,
          center.y,
          radius * 0.1,
          midAngle + Math.PI
        );
        const sa = Math.PI / 3 + midAngle;
        const r1 = 3.5;
        const p1 = {
          x: center.x + Math.cos(sa) * r1,
          y: center.y + Math.sin(sa) * r1,
        };
        const p2 = {
          x: center.x - Math.cos(sa) * r1,
          y: center.y - Math.sin(sa) * r1,
        };
        const r2 = r1 / 4;
        const p11 = {
          x: x + Math.cos(sa) * r2,
          y: y + Math.sin(sa) * r2,
        };
        const p21 = {
          x: x - Math.cos(sa) * r2,
          y: y - Math.sin(sa) * r2,
        };

        const path = [
          ["M", p21.x, p21.y],
          // 参数信息: cx, cy, .., .., .., endPointX, endPointY
          ["A", r2, r2, 0, 0, 1, p11.x, p11.y],
          ["L", p1.x, p1.y],
          ["A", r1, r1, 0, 0, 1, p2.x, p2.y],
          ["Z"],
        ];
        // pointer
        group.addShape("path", {
          name: "pointer",
          attrs: {
            path,
            fill: "#9155FD",
            ...pointer.style,
          },
        });
      }
      return group;
    },
  });

// 配置部分
const config = {
    // 设置图表的宽度和高度,如果不设置默认与容器大小一致画布,等同于设置了autoFit:true 效果
    with: 90,
    hight: 90,
    // 设置图表在画布的位置 可设置单个数字,也可以设置 [数字,数字,数字,数字] 控制4个方向。不加这个属性默认等于 auto
    // padding: "auto",

    // 当前仪表盘指针位置 值范围为 0 - 1
    percent: 0.33,
    // 仪表盘圆弧外环的半径 值得范围为 0 - 1
    radius: 0.9,

    // innerRadius 仪表盘圆弧内环的半径 值范围为 0 -1。
    //  外环和内环选一个配置即可,剩下可以配置圆弧宽度。
    // innerRadius: 0.8,

    // 调整仪表盘的开始位置 此处配置为半圆
    startAngle: Math.PI,
    //调整仪表盘的结束位置
    endAngle: 2 * Math.PI,
    // 图标渲染方式  canvas / svg 不设置默认为canvas 注意点:设置为svg后会影响到下面 gaugeStyle.lineCap 倒角的方向
    // renderer: "svg",
    // range 仪表盘的圆弧样式控制
    range: {
      // 控制仪表盘分色,此处分为3种颜色,各占3分之一
      ticks: [1 / 3, 3 / 4, 1],
      // 每个分区对应颜色
      color: ["#9155FD", "#C3ACF9", "#f4f5fa"],
      // 仪表板圆弧宽度默认单位为px
      width: 9,
    },
    // axis 仪表盘的刻度轴的配置
    axis: {
      // tickLine 为null 表示不显示刻度线
      tickLine: null,
      // label 为null 表示不显示刻度文字
      label: null,
    },

    //indicator 指针样式配置 null为不展示指针
    indicator: {
      // 自定义指针
      shape: "custom-gauge-indicator",
      // 配置指针样式,不包括圆盘
      pointer: {
        style: {
          stroke: "#9155FD",
          lineCap: "round",
          lineWidth: 4,
        },
      },
      // 配置指针连接的圆盘样式
      pin: {
        style: {
          // 指针边框颜色
          stroke: "#9155FD",
          // 指针圆盘半径
          r: 4.5,
          // 指针圆盘中间填充颜色
          fill: "#9155FD",
        },
      },
    },
    // 仪表盘的样式
    gaugeStyle: {
      // 圆弧内每段占比结束都进行倒角,包含仪表盘起始位置和结束位置都进行倒角
      lineCap: "round",
      // 圆弧外描边虚线
      lineDash: [2, 3],
      // 圆弧外描边虚线宽度
      lineWidth: 0.6,
      // 圆弧外描边颜色
      stroke: "#c0aaf6",
    },
  };


// 最终使用
   <Gauge {...config} />



更多详细属性描述,请前往 仪表盘 | G2Plot (antv.vision)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/mingwei_zhu/article/details/127445714

智能推荐

C++ Json到对象的自动序列化和反序列化工作_c++ json序列化和反序列化-程序员宅基地

文章浏览阅读555次,点赞17次,收藏22次。JSERIALIZE_DEF_OBJECTLIST(Person,Object,objectList) //接受json中的objectList对象数组,对象数组使用此宏定义。JSERIALIZE_DEF_OBJECTTYPE(Person,Son,son) //接受json中的son对象,对象成员使用此宏定义。//输出反序列化结果。

DOSBOX 0.74模拟器安装Windows 95_dosbox imgmount-程序员宅基地

文章浏览阅读7.8k次,点赞2次,收藏6次。DosBox本身带有5.0版的DOS系统,启动后虚拟一个Z盘存放有Dosbox特有的外部指令,如config.com、imgmount.com等,经测试,可以顺利安装各版本的windows 3.1系统,但是不能安装win95,需要用原版的dos镜像启动才能安装。1. 获取启动盘镜像文件 下载Win95启动软盘镜像文件,名为boot.img,放到DosBox 0.74的目录下。2. 制作硬盘镜像文件_dosbox imgmount

呼叫转移的普适性及编程实现_电话自动转移程序开发-程序员宅基地

文章浏览阅读53次。总结来说,呼叫转移是一种方便的电话通信功能,在编程中可以通过使用电话服务提供商的API来实现。然而,实际的实现可能因具体的服务提供商而有所不同,你需要参考相应的文档或与服务提供商联系以获取准确的实现细节。在函数内部,我们构建了一个API请求的有效载荷(payload),其中包含了原始电话号码和目标电话号码。在编程中,呼叫转移的实现涉及使用电话通信协议和相应的编程语言。需要注意的是,实际的呼叫转移功能的实现可能因电话服务提供商的不同而有所差异。首先,我们需要确保已经安装了Python的开发环境和相应的库。_电话自动转移程序开发

FLink聚合性能优化--MiniBatch分析_flink mini-batch-程序员宅基地

文章浏览阅读5.4k次,点赞4次,收藏15次。[@ TOC]一、MiniBatch的演进思路1、MiniBatch版本Flink 1.9.0 SQL(Blink Planner) 性能优化中一项重要的改进就是升级了微批模型,即 MiniBatch(也称作MicroBatch或MiniBatch2.0),在支持高吞吐场景发挥了重要作用。MiniBatch与早期的MiniBatch1.0在微批的触发机制略有不同。原理同样是缓存一定的数据后..._flink mini-batch

EasyExcel导入_easyexcel 对接multipartfile-程序员宅基地

文章浏览阅读808次,点赞6次,收藏6次。导入依赖<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.1.6</version></dependency>Controllerimport java.text.ParseException;import org.springframework._easyexcel 对接multipartfile

英飞凌TC3xx之一起认识DSADC系列(一)架构介绍-程序员宅基地

文章浏览阅读2.7k次,点赞27次,收藏42次。一文清晰了解英飞凌TC3xx系列的架构和组成部分,适用于正在使用EDSADC功能的人们。_dsadc

随便推点

2022考研日语71分自学经验贴;日语可以自学吗?-程序员宅基地

文章浏览阅读1.2k次,点赞3次,收藏5次。目录1 个人对考研日语的评价1 日语VS英语2 考研日语适合哪些人,什么时候开始3 找到可以选日语的院校专业的方法4 高考日语自学经历(供参考)4.1 学习过程4.2 必用资料5 考研日语自学+作文课经历(供参考)5.1 资料相关5.2 完型(20分)5.3 阅读(40分)5.4 翻译(15分)5.5 作文(25分)end实在受不了英语应试的折磨,高考和考研都用了203日语替换了英语(高考127分,考研估分65-70分)1 个人对考研日语的评价我是有了高考127分的基础(大概N3水平,N2擦线水平),

JVM性能优化 (一) 初识JVM-程序员宅基地

文章浏览阅读703次,点赞22次,收藏24次。到这里文章就讲完了,有疑问的兄弟可以在下面讨论或留言,也祝大家在今年开开心心,健健康康,能够拥有一份好工作,大家加油,我是牧小农!自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

通过手动给upx去壳简单了解逆向_upx脱壳机-程序员宅基地

文章浏览阅读1.7k次。对于像我这种想入门逆向的,这种方式真的可以培养兴趣,也从中学到了很多知识,我也不会仅仅止步于脱upx的。[外链图片转存中…(img-xkCBlSoD-1693021558445)]即可。对于像我这种想入门逆向的,这种方式真的可以培养兴趣,也从中学到了很多知识,我也不会仅仅止步于脱upx的。_upx脱壳机

Quartz定时任务调度cron 表达式时间格式(☆)_cron表达式 下午5点30-程序员宅基地

文章浏览阅读890次。cron 表达式的格式 Quartz Cron 表达式支持到七个域 名称 是否必须 允许值 特殊字符 秒 是 0-59 ..._cron表达式 下午5点30

SQL Server 疑难杂症--转换科学计数法的数值字符串为decimal类型_mssql 字符串转decimal 精度问题-程序员宅基地

文章浏览阅读1.8k次。今天在操作数据库时,需要将字符串转换成Decimal类型。代码如下:selectcast('0.12'asdecimal(18,2));selectconvert(decimal(18,2),'0.12');当需要将科学计数法的数字字符串转换成Decimal时,这2种写法都报错:Msg 8114, Level 16, State 5, Line 1Erro..._mssql 字符串转decimal 精度问题

soul源码解读(十八)-- resilience4j插件原理分析_resilience4j timeoutduration含义-程序员宅基地

文章浏览阅读553次。soul源码解读(十八)resilience4j插件使用resilience4jresilience4j插件是网关用来对流量进行限流与熔断的可选选择之一。resilience4j为网关熔断限流提供能力。插件使用1.启动 admin,打开 resilience4j 插件开关2.在 bootstrap 项目的 pom 文件引入 resilience4j 插件的相关依赖,启动 bootstrap <!-- soul resilience4j plugin start--> <_resilience4j timeoutduration含义

推荐文章

热门文章

相关标签