未经授权不得转载或抄袭。
转载合作请后台联系授权,侵权必究。

指标量级差太大画在一张图失真?
试试各轴刻度范围不同的多维度雷达图
注:本文所用数据均为模拟数据,不具有实际意义。
01
导入库和准备数据文件
导入库
import sysfrom typing import List, Tuple, Optionalimport numpy as npimport matplotlib.pyplot as pltimport matplotlibimport pandas as pd
准备数据文件
创建csv文件,格式如下:
02
配置参数
设置Config类

以下是该图的参数配置:
class Config:"""雷达图配置参数"""# 数据与基本设置USE_MANUAL_RANGE: bool = True # 是否使用手动范围(False 则自动扩展 10%)ROTATE_LABELS: bool = False # 是否径向旋转指标标签CSV_FILE: str = 'data.csv' # CSV 文件路径(第一列方法名,其余为指标)FIG_SIZE: Tuple[int, int] = (5, 6) # 图形大小(英寸)DPI: int = 600 # 保存图片分辨率LABEL_RADIUS: float = 1.15 # 指标标签的径向距离(>1 置于网格外)TITLE: str = 'Environmental Indicators' # 图表标题OUTPUT_FILE: str = 'radar_chart.png' # 输出文件名SCALE_DECIMALS_PER_AXIS: List[int] = [0, 0, 0, 1, 0, 0] # 刻度小数位数(列表长度必须与指标数量一致)N_CIRCLES: int = 2 # 同心圆圈数(网格线数量)# 手动范围(顺序与 CSV 中的指标列一致)MANUAL_RANGES: List[List[float]] = [[0, 10],[0, 80],[0, 4],[0, 0.4],[0, 40],[0, 10]]# 绘图颜色COLORS: List[str] = ['#619096', '#DAAB5B', '#D07258', '#45465B']

以下是该图修改的参数设置(其他与上一张图一样):
ROTATE_LABELS: bool = True # 是否旋转指标标签CSV_FILE: str = 'data2.csv' # CSV 文件路径(第一列方法名,其余为指标)OUTPUT_FILE: str = 'radar_chart2.png' # 输出文件名SCALE_DECIMALS_PER_AXIS: List[int] = [0, 0, 0, 1, 0, 0,0,0] # 刻度小数位数(列表长度必须与指标数量一致)N_CIRCLES: int = 3 # 同心圆圈数(网格线数量)# 手动范围(顺序与 CSV 中的指标列一致)MANUAL_RANGES: List[List[float]] = [[0, 45],[0, 600],[0, 15],[0, 0.9],[0, 60],[0, 45],[0, 9],[0, 300]]
03
参数小贴士
标签重叠
如果指标名称较长(出现指标名称与刻度值标签重叠时),可将LABEL_RADIUS调大(如1.2~1.5),让标签外移;或将ROTATE_LABELS设为True,让文字旋转。
网格线数量
N_CIRCLES控制同心圆数量。对于数据分布较均匀的场景,可增加到4或5,让刻度更细致。
颜色自定义
COLORS列表支持任何matplotlib颜色格式(十六进制、RGB、颜色名)。若方法数超过颜色数,会自动循环使用。
输出尺寸
FIG_SIZE=(5,6) 控制宽度和高度(英寸)。若需横向宽图,可改为(8,6)。
小数点位数
列表长度必须与指标数量一致,且小数位数不能为负数。若某个指标原始数据范围很小(如0~0.5),建议保留2~3位小数,避免所有刻度显示为“0”。
“今日分享至此✨”
如有错误或不足之处,欢迎随时在评论区指出,感谢!
完整代码获取方式,见评论区。
往期推荐

求点赞
求分享
求推荐