EChart 雷达图显示单点tooltip

简介: EChart 雷达图显示单点tooltip

最近封装了一个EChart 雷达图方法,效果如图:

代码如下:

/**
 *
 * @param {array} ydata 各方向频率值,暂定8个方向,
 * @param {string} name 名称,
 * @param {string} month 月份,
 * @returns 风玫瑰图option
 */
export async function windRose(ydata, name, month) {
    let newydata
    if (!ydata) {
        newydata = [0, 0, 0, 0, 0, 0, 0, 0]
    } else {
        newydata = ydata[month]
    }
    var max = Math.max(...newydata)
    max = max === 0 ? '1' : max
    const indicator = [{
            name: '北',
            max
        },
        {
            name: 'a',
            max
        },
        {
            name: '西',
            max
        },
        {
            name: 'b',
            max
        },
        {
            name: '南',
            max
        },
        {
            name: 'c',
            max
        },
        {
            name: '东',
            max
        },
        {
            name: 'd',
            max
        },
    ]
    const buildSeries = function (ydata,yname) {
        const data = ydata;
        const helper = data.map((item, index) => {
          const arr = new Array(data.length);
          arr.splice(index, 1, item);
          return arr;
        });
        return [data, ...helper].map((item, index) => {
          return {
            name: yname,
            type: "radar",
            symbol: index === 0 ? "circle" : "none",
            symbolSize: 4,
            itemStyle: {
              color: "#fff",
            },
            lineStyle: {
              color: index === 0 ? "#fac858" : "transparent",
            },
            areaStyle: {
              color: index === 0 ? "#fac858" : "transparent",
              opacity: 0.5,
            },
            tooltip: {
              show: index === 0 ? false : true,
              formatter: () => {
                  let res = indicator[index - 1].name + ":<br>";
                  let str =
                    '<i style="display: inline-block;width: 10px;height: 10px;background: ' +
                    "#fac858" +
                    ';margin-right: 5px;border-radius: 50%;}"></i>' +
                    yname +
                    ":" +
                    ydata[index - 1] +
                   '%' +
                    "<br>";
                  res += str;
                return res;
              },
            },
            z: index === 0 ? 1 : 2,
            data: [item],
          };
        });
      };
    const series = [];
    series.push(...buildSeries(newydata,name))
    let option = {
        tooltip: {},
        radar: {
          indicator: indicator,
        },
        series: series,
      };
    return option
}


相关文章
Echarts2.0雷达图tooltip单轴数据
Echarts2.0雷达图tooltip单轴数据
718 0
echarts 柱状图/折线图x轴坐标间隔
echarts 柱状图/折线图x轴坐标间隔
1780 0
|
JavaScript 数据处理
JS 取整,取余操作
JS 取整,取余操作
663 0
echarts修改tooltip默认样式(使用formatter函数拼接加工)
echarts修改tooltip默认样式(使用formatter函数拼接加工)
1271 0
Element UI - el-table 渲染慢,卡的原因
Element UI - el-table 渲染慢,卡的原因
4018 0
|
JavaScript 定位技术
echars 3D地图为区域自定义颜色
echars 3D地图为区域自定义颜色
echars 3D地图为区域自定义颜色
|
自然语言处理 前端开发 JavaScript
ECharts实现雷达图详解
ECharts 是百度开源的一款强大的数据可视化工具,支持多种图表类型如折线图、柱状图、饼图等,并提供丰富的交互功能。其核心实现原理包括数据驱动、Canvas/SVG渲染、响应式布局、动画效果、事件监听等。本文通过具体示例介绍了如何使用 ECharts 实现交互式雷达图,包括引入库、创建图表容器、配置雷达图、添加交互功能及动态数据更新等功能。通过简单的步骤即可在网页中展示绚丽的数据大屏。
2127 4
ECharts实现雷达图详解
|
存储 小程序 Java
【小程序分包】小程序包大于2M,来这教你分包啊
本文介绍了如何通过分包解决uniapp小程序包体积过大的问题。由于版本升级导致包体积超过2M,即使压缩静态资源也无法满足发布要求。文章详细讲解了分包的原因、步骤及注意事项,并提供了实操示例,帮助读者理解并实现小程序分包,从而减小主包大小
1410 2
【小程序分包】小程序包大于2M,来这教你分包啊
|
JavaScript
Vue3上传(Upload)
这是一个基于 Vue 3 的文件上传组件,提供了丰富的自定义选项,包括接受的文件类型、是否支持多选文件、上传数量限制、预览图片缩放规则等。组件还集成了多种功能,如拖拽上传、预览图片、自定义上传行为等,并支持不同类型的文件预览图标。组件使用了 `Space`、`Spin`、`Image` 和 `Message` 等子组件来实现多样化的布局和交互效果。此外,通过 `beforeUpload` 钩子可以对上传文件进行预处理,如限制文件大小和类型。整体设计简洁实用,适用于多种应用场景。
673 1
Vue3上传(Upload)
|
存储 缓存 前端开发
灵魂拷问-前端的作用--性能优化篇
作者最近在尝试对负责的平台进行性能优化,本文整理了些前端性能优化的一些常见策略。