如何自定义雷达图富文本轴标签样式?

问题来源:VChart 能否支持类似富文本样式的轴标签样式?

问题描述

期望在标签中支持自定义 icon 和不同的文本样式,类似于:

解决方案

首先,分析一下需求,图中是极坐标系下角度轴的标签。

  1. 添加轴配置

    1. 在 VChart 中可以通过 axes 属性来配置轴,axes 接收一个数组,添加一项,将 axes[0].type: 'angle' 设置轴类型为角度轴;
  2. 配置轴标签

    1. 通过格式化函数 formatMethod 配置 axes[0].label 为富文本。
    2. formatMethod 返回一个富文本内容的配置对象
    3. type: 'rich':定义返回文本类型为富文本
    4. text: 富文本的详细配置。支持文字和图片两种类型,详细配置可以参考配置项文档
scala 复制代码
formatMethod: (value, data, c, d) => {
  return {
    type: "rich",
    text: [
      {
        image:
          '<svg t="1714116158819" class="icon" viewBox="0 0 1228 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="19433" width="200" height="200"><path d="M1152 76.8v870.4h-1075.2v-870.4h1075.2M1228.8 0H0v1024h1228.8V0z" fill="#0686E5" p-id="19434"></path><path d="M0 0h1228.8v1024H0z" fill="#0686E5" p-id="19435"></path></svg>',
        width: 2,
        height: 10,
      },
      {
        text: ` ${value} `,
        fontSize: 16,
        fill: "black",
        fontWeight: "bold",
      },
      {
        text: ` ${values.find((v) => v.key === value)?.value} `,
        fontSize: 16,
        fill: "rgb(22,100,255)",
        fontWeight: "bold",
      },
    ],
  };
},

代码示例

🔔 下面的代码,可以复制粘贴到编辑器中查看效果

yaml 复制代码
const values = [
        {
          key: 'Strength',
          value: 5
        },
        {
          key: 'Speed',
          value: 5
        },
        {
          key: 'Shooting',
          value: 3
        },
        {
          key: 'Endurance',
          value: 5
        },
        {
          key: 'Precision',
          value: 5
        },
        {
          key: 'Growth',
          value: 5
        }
      ];

const spec = {
  type: 'radar',
  data: [
    {
      id: 'radarData',
      values
    }
  ],
  categoryField: 'key',
  valueField: 'value',
  point: {
    visible: false // disable point
  },
  area: {
    visible: true, // display area
    state: {
      // The style in the hover state of the area
      hover: {
        fillOpacity: 0.5
      }
    }
  },
  line: {
    style: {
      lineWidth: 4
    }
  },
  axes: [
    {
      orient: 'radius', // radius axis
      zIndex: 100,
      min: 0,
      max: 8,
      domainLine: {
        visible: false
      },
      label: {
        visible: true,
        space: 0,
        style: {
          textAlign: 'center',
          stroke: '#fff',
          lineWidth: 4
        }
      },
      grid: {
        smooth: false,
        style: {
          lineDash: [0]
        }
      }
    },
    {
      orient: 'angle', // angle axis
      zIndex: 50,
      tick: {
        visible: false
      },
      domainLine: {
        visible: false
      },
      label: {
        space: 20,
         formatMethod: (value, data,c,d) => {
          console.log(value,data,c,d)
      return {
        type: 'rich',
        text: [
          {
            image: '<svg t="1714116158819" class="icon" viewBox="0 0 1228 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="19433" width="200" height="200"><path d="M1152 76.8v870.4h-1075.2v-870.4h1075.2M1228.8 0H0v1024h1228.8V0z" fill="#0686E5" p-id="19434"></path><path d="M0 0h1228.8v1024H0z" fill="#0686E5" p-id="19435"></path></svg>',
            width: 2,
            height: 10
          },
          {
            text: ` ${value} `,
            fontSize: 16,
            fill: 'black',
            fontWeight: 'bold'
          },
           {
            text: ` ${values.find(v => v.key === value)?.value} `,
            fontSize: 16,
            fill: 'rgb(22,100,255)',
            fontWeight: 'bold'
          }
        ]
      };
    }
      },
      grid: {
        style: {
          lineDash: [0]
        }
      }
    }
  ]
};

const vchart = new VChart(spec, { dom: CONTAINER_ID });
vchart.renderSync();

// Just for the convenience of console debugging, DO NOT COPY!
window['vchart'] = vchart;

相关文档

富文本 demo:visactor.io/vchart/demo...

相关api:visactor.io/vchart/opti...

github:github.com/VisActor/VC...

相关推荐
Serendipity_Carl3 小时前
1637加盟网数据实战(数分可视化)
爬虫·python·pycharm·数据可视化·数据清洗
马克学长1 天前
SSM疫苗注射动态数据可视化系统8i0b4(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·数据可视化·ssm 框架·疫苗注射管理
老吴学AI2 天前
第 3 节 | 视觉魔术:Excel 如何用颜色和位置“控制”读者视线
信息可视化·数据分析·excel·职场·数据可视化·报表制作·用数据讲故事
CodeCraft Studio3 天前
如何借助TeeChart图表库,实现放射治疗QA数据的精准可视化
信息可视化·.net·数据可视化·teechart·医疗软件·医疗数据分析·医用图表
老吴学AI3 天前
第 2 节 | 从“呈现数据“到“驱动决策“:数据故事的力量
数据分析·数据可视化·excel教程·数据故事·职场技巧·业务洞察·报告编写
CodeCraft Studio4 天前
【案例分享】SciChart高性能数据可视化,助力某大型科研平台实现海量信号实时监测
信息可视化·数据分析·数据可视化·scichart·高性能图表引擎·科研平台
秋名山大前端5 天前
AI数字孪生本体智能技术方案
人工智能·aigc·数据可视化
CodeCraft Studio5 天前
【案例分享】TeeChart数据可视化图表库在高级分析软件中的应用
信息可视化·数据挖掘·数据分析·数据可视化·teechart·高级分析软件·.net图表库
Y_035 天前
SpringBoot+VUE3的图书管理系统
vue.js·spring boot·毕业设计·数据可视化
玄同7655 天前
MermaidTrace库:让Python运行时“自己画出”时序图
开发语言·人工智能·python·可视化·数据可视化·日志·异常