雷达图 (Radar Chart)

 前端   小卒子   2024-10-11 23:00   240

ECharts 雷达图:绘制雷达图及多数据项对比

雷达图(Radar Chart)是一种用于展示多变量数据的图表类型,非常适合用来对比不同数据项的特征和表现。通过雷达图,我们可以直观地比较多个类别的数值,帮助我们快速识别优劣势。本文将深入探讨如何使用 ECharts 绘制雷达图,并详细介绍其配置项。

一、雷达图的基础知识

雷达图由多个轴线组成,每个轴线代表一个特征(或指标)。在这些轴线的交点上,可以绘制出一个多边形,以展示各数据项的表现。雷达图特别适合于展示各项指标之间的相对关系,常用于性能评估、产品对比等场景。

二、安装 ECharts

在开始之前,请确保在项目中引入 ECharts。可以通过 CDN 进行引入:

<script src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script>

三、绘制雷达图

1. 定义 HTML 结构

首先,定义一个用于展示雷达图的 <div> 容器:

<div id="radarChart" style="width: 600px; height: 400px;"></div>

2. 配置雷达图的 option

以下是一个雷达图的基本配置示例:

var radarChart = echarts.init(document.getElementById('radarChart'));

var radarOption = {
    title: {
        text: '雷达图示例',
        left: 'center',
        textStyle: {
            color: '#333',
            fontSize: 20
        }
    },
    tooltip: {
        trigger: 'item'
    },
    legend: {
        data: ['数据项1', '数据项2'],
        bottom: '10%'
    },
    radar: {
        indicator: [
            { name: '销售', max: 6500 },
            { name: '管理', max: 16000 },
            { name: '信息技术', max: 30000 },
            { name: '客服', max: 38000 },
            { name: '研发', max: 52000 },
            { name: '市场', max: 25000 }
        ],
        shape: 'circle',
        splitNumber: 4,
        name: {
            textStyle: {
                color: '#999'
            }
        },
        splitArea: {
            areaStyle: {
                color: ['rgba(255, 255, 255, 0.3)', 'rgba(0, 0, 0, 0.1)']
            }
        },
        splitLine: {
            lineStyle: {
                color: '#ddd'
            }
        }
    },
    series: [{
        name: '某地区',
        type: 'radar',
        data: [
            {
                value: [4300, 10000, 28000, 35000, 50000, 19000],
                name: '数据项1'
            },
            {
                value: [5000, 14000, 28000, 31000, 42000, 21000],
                name: '数据项2'
            }
        ],
        areaStyle: {
            normal: {
                opacity: 0.5
            }
        }
    }]
};

radarChart.setOption(radarOption);

3. 完整的 HTML 代码示例

以下是完整的 HTML 文件代码,包含雷达图的创建和渲染:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ECharts 雷达图示例</title>
    <script src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script>
</head>
<body>
    <h1>使用 ECharts 绘制雷达图</h1>
    <div id="radarChart" style="width: 600px; height: 400px;"></div>

    <script>
        var radarChart = echarts.init(document.getElementById('radarChart'));

        var radarOption = {
            title: {
                text: '雷达图示例',
                left: 'center',
                textStyle: {
                    color: '#333',
                    fontSize: 20
                }
            },
            tooltip: {
                trigger: 'item'
            },
            legend: {
                data: ['数据项1', '数据项2'],
                bottom: '10%'
            },
            radar: {
                indicator: [
                    { name: '销售', max: 6500 },
                    { name: '管理', max: 16000 },
                    { name: '信息技术', max: 30000 },
                    { name: '客服', max: 38000 },
                    { name: '研发', max: 52000 },
                    { name: '市场', max: 25000 }
                ],
                shape: 'circle',
                splitNumber: 4,
                name: {
                    textStyle: {
                        color: '#999'
                    }
                },
                splitArea: {
                    areaStyle: {
                        color: ['rgba(255, 255, 255, 0.3)', 'rgba(0, 0, 0, 0.1)']
                    }
                },
                splitLine: {
                    lineStyle: {
                        color: '#ddd'
                    }
                }
            },
            series: [{
                name: '某地区',
                type: 'radar',
                data: [
                    {
                        value: [4300, 10000, 28000, 35000, 50000, 19000],
                        name: '数据项1'
                    },
                    {
                        value: [5000, 14000, 28000, 31000, 42000, 21000],
                        name: '数据项2'
                    }
                ],
                areaStyle: {
                    normal: {
                        opacity: 0.5
                    }
                }
            }]
        };

        radarChart.setOption(radarOption);
    </script>
</body>
</html>

四、雷达图的配置详解

1. 雷达图的指示器

在雷达图中,indicator 数组用于定义各个特征(轴线)。每个对象包含以下属性:

  • name:特征名称。
  • max:该特征的最大值。

例如:

indicator: [
    { name: '销售', max: 6500 },
    { name: '管理', max: 16000 },
    { name: '信息技术', max: 30000 },
    { name: '客服', max: 38000 },
    { name: '研发', max: 52000 },
    { name: '市场', max: 25000 }
]

2. 数据的配置

series 数组用于定义雷达图的数据。每个数据项包含以下属性:

  • value:该数据项在各个特征上的值,顺序要与 indicator 中的特征顺序一致。
  • name:数据项的名称。

例如:

data: [
    {
        value: [4300, 10000, 28000, 35000, 50000, 19000],
        name: '数据项1'
    },
    {
        value: [5000, 14000, 28000, 31000, 42000, 21000],
        name: '数据项2'
    }
]

3. 轴线、区域和线条的样式

可以通过配置 radar 中的各个样式属性来改变雷达图的外观:

  • splitLine:配置分割线的样式。
  • splitArea:配置分割区域的样式。
  • name:配置特征名称的样式。

例如:

splitLine: {
    lineStyle: {
        color: '#ddd'
    }
},
splitArea: {
    areaStyle: {
        color: ['rgba(255, 255, 255, 0.3)', 'rgba(0, 0, 0, 0.1)']
    }
},
name: {
    textStyle: {
        color: '#999'
    }
}

五、添加辅助线

如果需要在雷达图上添加辅助线(如平均线),可以通过 markLine 属性进行配置。以下是一个示例:

markLine: {
    data: [
        { type: 'average', name: '平均值' }
    ]
}

六、总结

本文详细介绍了如何使用 ECharts 绘制雷达图,包括雷达图的基本配置、数据结构解析及样式自定义。雷达图作为一种多维数据展示的有效工具,能够帮助我们清晰地比较和分析不同数据项之间的特征。希望这篇博客能帮助您更好地理解和使用 ECharts 绘制雷达图!