🔥
个人主页:
杨利杰YJlio
❄️
个人专栏:
《Sysinternals实战教程》
《Windows PowerShell 实战》
《WINDOWS教程》
《IOS教程》
《微信助手》
《锤子助手》
《Python》
《Kali Linux》
《那些年未解决的Windows疑难杂症》
🌟
让复杂的事情更简单,让重复的工作自动化

《超简单:用 Python 让 Excel 飞起来》读书笔记:第8章 案例05 制作雷达图对比多项指标
- 1. 问题背景:为什么要用雷达图做多指标对比
- 2. 适用场景:雷达图适合什么,不适合什么
- 3. 核心原理:雷达图为什么要用极坐标和首尾闭环
- 4. 基础实战:用 Matplotlib 绘制单对象雷达图
- 5. 多对象对比:方案 A vs 方案 B 才是雷达图的高频用法
- 6. 图表优化:刻度、网格、透明填充决定可读性
- 7. 企业可交付版:从 Excel 评分表自动生成雷达图 PNG
- 8. 效果验证:不要只看脚本有没有报错
- 9. 常见问题与踩坑提醒
-
- 9.1 中文显示乱码
- 9.2 指标单位不统一
- 9.3 指标太多导致图形难读
- 9.4 多对象对比时颜色过多
- 9.5 雷达图不适合做精确排名
- 10. 总结提升:雷达图的核心不是画图,而是建立多维判断

1. 问题背景:为什么要用雷达图做多指标对比
在 Excel 数据分析和 Python 自动化报表里,很多问题并不是单一指标能讲清楚的。比如比较两个方案、两个部门、两台设备、两个供应商时,我们往往不只看一个数字,而是要同时看性能、稳定性、成本、响应速度、满意度、文档规范等多个维度。
这类数据如果只用表格展示,读者需要一行一行对比;如果只用柱形图展示,图表数量又会变多。雷达图的价值就在于:把多维指标压缩到一张图里,用“形状”帮助我们快速判断强项和短板。
这张图展示了雷达图在实际数据分析中的应用场景:左侧是代码和 Excel 数据,右侧是多维指标雷达图,中间突出“雷达图应用场景”。

从这张图中可以看出,雷达图不是为了“好看”而存在,它更适合做多维对比、方案评估、短板识别。在办公自动化场景里,它可以把 Excel 评分表转成更直观的图表结果,尤其适合写入周报、月报、评估报告。
本文目标:
- 学会用 Python + Matplotlib 绘制基础雷达图;
- 理解极坐标、角度均分、首尾闭环这些核心原理;
- 学会绘制多对象雷达图,用于方案 A / 方案 B 对比;
- 学会从 Excel 读取评分表,自动输出雷达图 PNG;
- 明确雷达图的适用边界,避免“图很好看,但结论是错的”。
#mermaid-svg-8u6OjeN69g2mb90i{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-8u6OjeN69g2mb90i .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-8u6OjeN69g2mb90i .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-8u6OjeN69g2mb90i .error-icon{fill:#552222;}#mermaid-svg-8u6OjeN69g2mb90i .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-8u6OjeN69g2mb90i .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-8u6OjeN69g2mb90i .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-8u6OjeN69g2mb90i .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-8u6OjeN69g2mb90i .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-8u6OjeN69g2mb90i .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-8u6OjeN69g2mb90i .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-8u6OjeN69g2mb90i .marker{fill:#333333;stroke:#333333;}#mermaid-svg-8u6OjeN69g2mb90i .marker.cross{stroke:#333333;}#mermaid-svg-8u6OjeN69g2mb90i svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-8u6OjeN69g2mb90i p{margin:0;}#mermaid-svg-8u6OjeN69g2mb90i .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-8u6OjeN69g2mb90i .cluster-label text{fill:#333;}#mermaid-svg-8u6OjeN69g2mb90i .cluster-label span{color:#333;}#mermaid-svg-8u6OjeN69g2mb90i .cluster-label span p{background-color:transparent;}#mermaid-svg-8u6OjeN69g2mb90i .label text,#mermaid-svg-8u6OjeN69g2mb90i span{fill:#333;color:#333;}#mermaid-svg-8u6OjeN69g2mb90i .node rect,#mermaid-svg-8u6OjeN69g2mb90i .node circle,#mermaid-svg-8u6OjeN69g2mb90i .node ellipse,#mermaid-svg-8u6OjeN69g2mb90i .node polygon,#mermaid-svg-8u6OjeN69g2mb90i .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-8u6OjeN69g2mb90i .rough-node .label text,#mermaid-svg-8u6OjeN69g2mb90i .node .label text,#mermaid-svg-8u6OjeN69g2mb90i .image-shape .label,#mermaid-svg-8u6OjeN69g2mb90i .icon-shape .label{text-anchor:middle;}#mermaid-svg-8u6OjeN69g2mb90i .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-8u6OjeN69g2mb90i .rough-node .label,#mermaid-svg-8u6OjeN69g2mb90i .node .label,#mermaid-svg-8u6OjeN69g2mb90i .image-shape .label,#mermaid-svg-8u6OjeN69g2mb90i .icon-shape .label{text-align:center;}#mermaid-svg-8u6OjeN69g2mb90i .node.clickable{cursor:pointer;}#mermaid-svg-8u6OjeN69g2mb90i .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-8u6OjeN69g2mb90i .arrowheadPath{fill:#333333;}#mermaid-svg-8u6OjeN69g2mb90i .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-8u6OjeN69g2mb90i .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-8u6OjeN69g2mb90i .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-8u6OjeN69g2mb90i .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-8u6OjeN69g2mb90i .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-8u6OjeN69g2mb90i .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-8u6OjeN69g2mb90i .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-8u6OjeN69g2mb90i .cluster text{fill:#333;}#mermaid-svg-8u6OjeN69g2mb90i .cluster span{color:#333;}#mermaid-svg-8u6OjeN69g2mb90i div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-8u6OjeN69g2mb90i .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-8u6OjeN69g2mb90i rect.text{fill:none;stroke-width:0;}#mermaid-svg-8u6OjeN69g2mb90i .icon-shape,#mermaid-svg-8u6OjeN69g2mb90i .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-8u6OjeN69g2mb90i .icon-shape p,#mermaid-svg-8u6OjeN69g2mb90i .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-8u6OjeN69g2mb90i .icon-shape .label rect,#mermaid-svg-8u6OjeN69g2mb90i .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-8u6OjeN69g2mb90i .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-8u6OjeN69g2mb90i .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-8u6OjeN69g2mb90i :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
Excel评分表
读取指标与分数
检查量纲是否统一
转换为极坐标角度
绘制雷达图
优化刻度/网格/填充
输出PNG用于报告

2. 适用场景:雷达图适合什么,不适合什么
雷达图最适合处理多指标评分型数据。所谓评分型数据,就是每个维度都有一个可比较的分数,例如 0~100 分、1~5 分、A/B/C 等级转换后的数值。
适合使用雷达图的场景:
- 方案对比:方案 A 与方案 B 谁更均衡;
- 设备评估:性能、稳定性、功耗、成本、可维护性;
- 团队能力画像:沟通、执行、技术、协作、复盘;
- 服务质量分析:响应速度、解决率、满意度、复发率控制;
- 产品评分:易用性、可靠性、安全性、扩展性、性价比。
但雷达图不是万能图表。如果你要展示时间趋势,折线图更合适;如果你要比较单个指标高低,柱形图更直接;如果你要展示占比构成,饼图或堆积图更清楚。
不建议使用雷达图的情况:
- 指标单位不统一,例如“万元、百分比、小时、次数”混在一起;
- 指标数量太多,超过 10 个后图形会变成“毛线团”;
- 需要精确读数的场景,雷达图更适合看轮廓,不适合读精确值;
- 指标之间本身没有可比性,强行放在一张图里会误导结论。
我的经验是:雷达图最舒服的指标数量通常是 5~8 个,评分范围最好统一到 0~100。这样图形既不会太稀,也不会太乱。

3. 核心原理:雷达图为什么要用极坐标和首尾闭环
雷达图本质上不是普通的 x/y 平面图,而是基于极坐标 polar绘制出来的图。每一个指标不是放在横轴上,而是放在圆周上的一个方向上。
这张图展示了雷达图的底层绘制原理:指标围绕圆周均匀分布,每个指标对应一个角度,分数决定点到中心的距离,最后把所有点连起来形成一个闭合多边形。

从这张图中可以看出,雷达图的关键不是“画一个多边形”,而是把每个指标映射到一个固定角度,再把对应分数映射为半径长度。这也是为什么雷达图特别适合看“形状”:某个方向凹进去,就说明这个指标偏弱;某个方向凸出来,就说明这个指标较强。
在 Python 中,雷达图通常需要处理三个核心动作:
import numpy as np
labels = ["响应速度", "解决率", "满意度", "复发率控制", "文档规范"]
values = [80, 90, 85, 70, 88]
N = len(labels)
# 1. 把 0~2π 均分为 N 个角度
angles = np.linspace(0, 2 * np.pi, N, endpoint=False)
# 2. 首尾闭环
values = np.concatenate([values, [values[0]]])
angles = np.concatenate([angles, [angles[0]]])
这里最容易漏掉的是“首尾闭环”。如果不把第一个点补到最后,雷达图就不会闭合,视觉上会像一条断开的折线,而不是完整的能力轮廓。

4. 基础实战:用 Matplotlib 绘制单对象雷达图
先从最小可用版本开始。这个版本适合展示一个对象的多维评分,例如某个团队、某个设备、某个方案的能力画像。
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
labels = ["响应速度", "解决率", "满意度", "复发率控制", "文档规范"]
values = [80, 90, 85, 70, 88]
N = len(labels)
angles = np.linspace(0, 2 * np.pi, N, endpoint=False)
values = np.concatenate([values, [values[0]]])
angles = np.concatenate([angles, [angles[0]]])
fig = plt.figure(figsize=(7, 7))
ax = plt.subplot(111, polar=True)
ax.plot(angles, values, linewidth=2)
ax.fill(angles, values, alpha=0.25)
ax.set_thetagrids(angles[:–1] * 180 / np.pi, labels)
ax.set_ylim(0, 100)
plt.title("服务质量雷达图")
plt.tight_layout()
plt.show()
这段代码的重点不在参数多,而在流程完整:先准备指标和分数,再计算角度,再闭环,最后用 polar 画图。
如果图形里某个方向明显凹进去,说明该指标相对短板;如果整个图形比较饱满,说明整体能力较均衡。

5. 多对象对比:方案 A vs 方案 B 才是雷达图的高频用法
单对象雷达图能看自己的短板,但在真实办公场景里,雷达图更常用于多对象对比。比如两个方案、两个部门、两个供应商、两种设备型号放到同一张图里,谁强谁弱会非常直观。
这张图展示了“方案 A vs 方案 B”的多对象雷达图。蓝色区域代表方案 A,粉色区域代表方案 B,不同指标上的长短差异非常明显。

从这张图中可以看出,方案 A 在响应速度、稳定性、文档规范等维度更强,而方案 B 在解决率等维度表现突出。这类图最适合汇报时快速引出问题:不是简单问“谁更好”,而是问“各自强在哪里,短板在哪里”。
下面是双对象雷达图的基础代码:
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
labels = ["响应速度", "解决率", "满意度", "文档规范", "稳定性"]
A = [80, 70, 85, 90, 88]
B = [60, 90, 40, 78, 65]
N = len(labels)
angles = np.linspace(0, 2 * np.pi, N, endpoint=False)
A = np.concatenate([A, [A[0]]])
B = np.concatenate([B, [B[0]]])
angles = np.concatenate([angles, [angles[0]]])
fig = plt.figure(figsize=(7, 7))
ax = plt.subplot(111, polar=True)
ax.plot(angles, A, linewidth=2, label="方案A")
ax.fill(angles, A, alpha=0.18)
ax.plot(angles, B, linewidth=2, linestyle="–", label="方案B")
ax.fill(angles, B, alpha=0.18)
ax.set_thetagrids(angles[:–1] * 180 / np.pi, labels)
ax.set_ylim(0, 100)
plt.title("多对象雷达图:方案A vs 方案B")
plt.legend(loc="upper right", bbox_to_anchor=(1.2, 1.1))
plt.tight_layout()
plt.show()
注意:多对象对比时,所有对象的指标顺序必须完全一致。
如果方案 A 的第一个指标是响应速度,方案 B 的第一个指标却变成满意度,那么图形看起来还能画出来,但结论已经错了。

6. 图表优化:刻度、网格、透明填充决定可读性
很多人第一次用 Python 画雷达图时,图形确实出来了,但看起来不够“像报告”。原因通常不是数据错了,而是刻度、网格、填充透明度、图例位置没有处理好。
这张图展示了雷达图定制优化的重点:刻度优化、网格优化、透明填充。它说明一张图能不能交付,不只看是否画出来,还要看读者是否能快速读懂。

从这张图中可以看出,清晰的径向刻度可以帮助判断分值区间,简洁的多边形网格可以辅助读数,透明填充可以增强对比层次。推荐做法是:网格线要有,但不能抢数据本身的视觉焦点。
我常用这几类优化:
# 让雷达图从顶部开始,并按顺时针方向排列
ax.set_theta_offset(np.pi / 2)
ax.set_theta_direction(–1)
# 设置半径刻度
ax.set_yticks([20, 40, 60, 80, 100])
ax.set_yticklabels(["20", "40", "60", "80", "100"])
# 设置网格线
ax.grid(True, linestyle="–", alpha=0.4)
# 设置取值范围
ax.set_ylim(0, 100)
# 图例放到图外,避免遮挡
plt.legend(loc="upper right", bbox_to_anchor=(1.25, 1.12))
这里有一个实战判断:如果雷达图要发给领导或同事看,图例宁可放到图外,也不要挡住数据区域。遮挡一两个关键点,读者就会对图产生误判。

7. 企业可交付版:从 Excel 评分表自动生成雷达图 PNG
前面的代码适合学习原理,但真正办公自动化时,我们更常见的需求是:评分数据已经在 Excel 里,Python 负责读取评分表,然后自动生成雷达图图片。
这张图展示了完整链路:Excel 评分表作为输入,Python 自动处理数据,最后生成雷达图 PNG 文件。

从这张图中可以看出,雷达图可以成为自动化报表的一部分。也就是说,我们不是每次手动画图,而是把“读数据、处理数据、画图、保存图片”做成固定脚本。
假设 Excel 表结构如下:
| 响应速度 | 80 | 60 |
| 解决率 | 70 | 90 |
| 满意度 | 85 | 40 |
| 文档规范 | 90 | 78 |
| 稳定性 | 88 | 65 |
完整代码如下:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pathlib import Path
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
def radar_from_excel(
xlsx_path: str,
sheet_name: str = "评分",
label_col: str = "指标",
series_cols: list[str] | None = None,
out_png: str = "out/radar.png",
r_min: int = 0,
r_max: int = 100,
):
"""
从 Excel 评分表读取多指标数据,生成雷达图 PNG。
要求:
1. 指标列为 label_col
2. 每个对象一列,例如 方案A、方案B
3. 分数建议统一为 0~100
"""
if series_cols is None:
series_cols = ["方案A", "方案B"]
df = pd.read_excel(xlsx_path, sheet_name=sheet_name)
# 基础校验
need_cols = [label_col] + series_cols
missing = [c for c in need_cols if c not in df.columns]
if missing:
raise ValueError(f"Excel 缺少必要列:{missing}")
labels = df[label_col].astype(str).tolist()
N = len(labels)
if N < 3:
raise ValueError("雷达图至少需要 3 个指标,否则图形没有意义。")
angles = np.linspace(0, 2 * np.pi, N, endpoint=False)
angles = np.concatenate([angles, [angles[0]]])
fig = plt.figure(figsize=(7, 7))
ax = plt.subplot(111, polar=True)
# 从顶部开始,顺时针排列
ax.set_theta_offset(np.pi / 2)
ax.set_theta_direction(–1)
for col in series_cols:
values = pd.to_numeric(df[col], errors="coerce").fillna(0).to_numpy()
values = np.concatenate([values, [values[0]]])
ax.plot(angles, values, linewidth=2, label=col)
ax.fill(angles, values, alpha=0.18)
ax.set_thetagrids(angles[:–1] * 180 / np.pi, labels)
ax.set_ylim(r_min, r_max)
ax.set_yticks([20, 40, 60, 80, 100])
ax.set_yticklabels(["20", "40", "60", "80", "100"])
ax.grid(True, linestyle="–", alpha=0.4)
plt.title("雷达图:多指标对比")
plt.legend(loc="upper right", bbox_to_anchor=(1.25, 1.12))
plt.tight_layout()
out_png = Path(out_png)
out_png.parent.mkdir(parents=True, exist_ok=True)
plt.savefig(out_png, dpi=200)
plt.close()
return str(out_png)
if __name__ == "__main__":
png_path = radar_from_excel(
xlsx_path="score.xlsx",
sheet_name="评分",
label_col="指标",
series_cols=["方案A", "方案B"],
out_png="out/雷达图_方案对比.png",
)
print("已输出:", png_path)
推荐做法:正式使用时不要直接覆盖旧图片,建议输出到 out/ 目录,并在文件名里带上业务对象,例如 雷达图_供应商对比_202607.png。
这样后续写报告、插入 Word、上传 CSDN 时,都能快速找到对应图表。

8. 效果验证:不要只看脚本有没有报错
图表类脚本有一个常见误区:脚本不报错,就以为结果正确。这个判断太粗糙。雷达图尤其需要验证,因为它涉及指标顺序、评分范围、图形闭合、图例对应关系。
建议从这几个角度验证:
检查输出文件是否存在 确认 out/雷达图_方案对比.png 是否正常生成。
检查图形是否闭合 如果多边形没有闭合,说明首尾闭环代码可能漏了。
检查指标顺序是否一致 Excel 中指标顺序就是图中指标顺序,不要在不同方案之间打乱。
检查评分范围是否合理 如果分数是 0~5,却强行设置 set_ylim(0,100),图会全部缩在中心,看起来像数据异常。
检查图例是否对应正确 多对象图里,方案 A / 方案 B 的颜色、线型、图例必须对应清楚。
最危险的情况不是代码报错,而是图能画出来,但业务结论被误导。

9. 常见问题与踩坑提醒
9.1 中文显示乱码
如果标题、指标名显示成方块,一般是 Matplotlib 没有正确设置中文字体。
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
如果电脑没有黑体,可以改成:
plt.rcParams["font.sans-serif"] = ["Microsoft YaHei"]
9.2 指标单位不统一
这是雷达图最容易误导人的地方。比如把“成本金额”“满意度百分比”“响应时间小时”直接放在同一张雷达图里,看起来像能对比,实际没有统计意义。
正确做法:先把不同单位统一成评分,例如全部转换为 0~100 分。 错误做法:原始单位直接画图,然后根据形状下结论。
9.3 指标太多导致图形难读
雷达图指标超过 10 个后,图形会明显拥挤。指标名长一点时,甚至会互相覆盖。
实战建议:把指标控制在 5~8 个,把不重要的维度合并为“其他”或放到表格补充说明里。
9.4 多对象对比时颜色过多
如果你同时对比 5 个以上对象,雷达图会很乱。这个时候不建议继续叠加对象,而是考虑拆成多张图,或者改用热力图、柱形图。
9.5 雷达图不适合做精确排名
雷达图更适合看轮廓和短板,不适合做严格排名。如果要精确比较每个指标,最好配合表格或柱形图一起使用。

10. 总结提升:雷达图的核心不是画图,而是建立多维判断
这一节的重点,不是记住几行 Matplotlib 代码,而是理解雷达图背后的判断逻辑:把多维指标变成一个可观察的形状,让强项和短板更容易被发现。
我建议把雷达图当成一种“多指标审计工具”,而不是普通装饰图。它真正有价值的地方在于:
- 能快速看出一个对象是否均衡;
- 能快速比较两个方案的优势差异;
- 能把 Excel 评分表变成可汇报的图形;
- 能帮助读者从“看数字”切换到“看结构”。
最后再强调一次:雷达图最大的风险是“指标口径不统一”。
如果不同指标没有经过统一评分或标准化,图形越漂亮,误导性可能越强。
我的推荐使用流程:
#mermaid-svg-6Wg2TnGAFiXd0inG{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-6Wg2TnGAFiXd0inG .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-6Wg2TnGAFiXd0inG .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-6Wg2TnGAFiXd0inG .error-icon{fill:#552222;}#mermaid-svg-6Wg2TnGAFiXd0inG .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-6Wg2TnGAFiXd0inG .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-6Wg2TnGAFiXd0inG .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-6Wg2TnGAFiXd0inG .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-6Wg2TnGAFiXd0inG .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-6Wg2TnGAFiXd0inG .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-6Wg2TnGAFiXd0inG .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-6Wg2TnGAFiXd0inG .marker{fill:#333333;stroke:#333333;}#mermaid-svg-6Wg2TnGAFiXd0inG .marker.cross{stroke:#333333;}#mermaid-svg-6Wg2TnGAFiXd0inG svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-6Wg2TnGAFiXd0inG p{margin:0;}#mermaid-svg-6Wg2TnGAFiXd0inG .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-6Wg2TnGAFiXd0inG .cluster-label text{fill:#333;}#mermaid-svg-6Wg2TnGAFiXd0inG .cluster-label span{color:#333;}#mermaid-svg-6Wg2TnGAFiXd0inG .cluster-label span p{background-color:transparent;}#mermaid-svg-6Wg2TnGAFiXd0inG .label text,#mermaid-svg-6Wg2TnGAFiXd0inG span{fill:#333;color:#333;}#mermaid-svg-6Wg2TnGAFiXd0inG .node rect,#mermaid-svg-6Wg2TnGAFiXd0inG .node circle,#mermaid-svg-6Wg2TnGAFiXd0inG .node ellipse,#mermaid-svg-6Wg2TnGAFiXd0inG .node polygon,#mermaid-svg-6Wg2TnGAFiXd0inG .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-6Wg2TnGAFiXd0inG .rough-node .label text,#mermaid-svg-6Wg2TnGAFiXd0inG .node .label text,#mermaid-svg-6Wg2TnGAFiXd0inG .image-shape .label,#mermaid-svg-6Wg2TnGAFiXd0inG .icon-shape .label{text-anchor:middle;}#mermaid-svg-6Wg2TnGAFiXd0inG .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-6Wg2TnGAFiXd0inG .rough-node .label,#mermaid-svg-6Wg2TnGAFiXd0inG .node .label,#mermaid-svg-6Wg2TnGAFiXd0inG .image-shape .label,#mermaid-svg-6Wg2TnGAFiXd0inG .icon-shape .label{text-align:center;}#mermaid-svg-6Wg2TnGAFiXd0inG .node.clickable{cursor:pointer;}#mermaid-svg-6Wg2TnGAFiXd0inG .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-6Wg2TnGAFiXd0inG .arrowheadPath{fill:#333333;}#mermaid-svg-6Wg2TnGAFiXd0inG .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-6Wg2TnGAFiXd0inG .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-6Wg2TnGAFiXd0inG .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-6Wg2TnGAFiXd0inG .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-6Wg2TnGAFiXd0inG .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-6Wg2TnGAFiXd0inG .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-6Wg2TnGAFiXd0inG .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-6Wg2TnGAFiXd0inG .cluster text{fill:#333;}#mermaid-svg-6Wg2TnGAFiXd0inG .cluster span{color:#333;}#mermaid-svg-6Wg2TnGAFiXd0inG div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-6Wg2TnGAFiXd0inG .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-6Wg2TnGAFiXd0inG rect.text{fill:none;stroke-width:0;}#mermaid-svg-6Wg2TnGAFiXd0inG .icon-shape,#mermaid-svg-6Wg2TnGAFiXd0inG .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-6Wg2TnGAFiXd0inG .icon-shape p,#mermaid-svg-6Wg2TnGAFiXd0inG .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-6Wg2TnGAFiXd0inG .icon-shape .label rect,#mermaid-svg-6Wg2TnGAFiXd0inG .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-6Wg2TnGAFiXd0inG .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-6Wg2TnGAFiXd0inG .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-6Wg2TnGAFiXd0inG :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
确定对比对象
选择5到8个核心指标
统一评分口径
Excel整理评分表
Python读取数据
生成雷达图PNG
结合表格解释结论
真正高质量的图表,不是让人觉得“好看”,而是让人更快做出正确判断。雷达图也是一样:它的终点不是图片,而是清晰、可复盘、能被验证的多维分析结论。
返回顶部


