MCM520 ← 资料站首页 图表选择可视化指南:折线图:看趋势与变化(深度版) 打开交互阅读器 →

图表选择可视化指南:折线图:看趋势与变化(深度版)

展示一个或多个变量随时间/顺序的变化趋势,是建模论文里最常用、最该先想到的图。

分类:📈 基础图 适用:时间序列趋势、算法收敛曲线、多方案对比走势

一、这个图适合谁(适用场景)

  • 时间序列趋势
  • 算法收敛曲线
  • 多方案对比走势

二、图表结构要素

  1. 横轴=有序变量(时间/迭代)
  2. 纵轴=观测值
  3. 多条线=多序列
  4. 可加误差带

三、可视化的底层逻辑

折线图之所以是"趋势表达首选",是因为它用的是人类感知精度最高的视觉通道之一——沿共同量表的垂直位置(position)。Cleveland & McGill(1984)的经典实验把图表通道按人的判断误差从低到高排了序:位置/长度最优,角度、面积、体积次之,颜色饱和度与色相最弱。折线图把每个数据点放在共享纵轴上,读者靠"比较两个点的高度差"就能精确读出变化,这正落在最优通道档。它表达的是"沿有序轴的连续变化",所以横轴必须有序——把无序类别连成线,等于用最高精度通道去编码本不该连成趋势的东西,制造假趋势。核心思想:用感知精度最高的通道,去承载最该被准确读取的信息(方向、斜率、拐点)。

四、视觉编码与感知推导

感知精度档(Cleveland-McGill):通道判断误差 ε\varepsilon 随精度档递减:

ε: 位置<长度<角度<面积<体积<色饱和度<色相 \varepsilon:\ \text{位置}<\text{长度}<\text{角度}<\text{面积}<\text{体积}<\text{色饱和度}<\text{色相}

折线图的"垂直位置"属第一档,故趋势判断最准。反观"用颜色深浅表示数值"属末档,误差可高出数倍——这正是热力图必须加数值标注的原因。

斜率知觉阈值:人在折线图上对拐点斜率变化的察觉,需斜率差 Δk\Delta k 超过感知阈值 τ\tau:

∣Δk∣>τ ⇒ 拐点可辨 |\Delta k|>\tau\ \Rightarrow\ \text{拐点可辨}

故关键拐点处应标注数值或放大局部,否则细微但重要的变化易被忽略。

数据墨水比(Tufte):图表有效信息效率

Rink=非冗余数据墨水总墨水 R_{\text{ink}}=\frac{\text{非冗余数据墨水}}{\text{总墨水}}

应最大化——去掉多余网格线、三维装饰、边框,把墨水留给真正编码数据的线。这也是"加误差带而非花哨特效"的理论支撑:误差带增加的墨水直接服务"不确定性"这一数据信息。

五、怎么画(步骤)

  1. 确认横轴是有序的(时间、epoch、样本序号),否则别用折线。
  2. 多条线用不同颜色+图例,线型区分(实/虚)增强可读性。
  3. 加标题、坐标轴单位、网格线;关键拐点标注。
  4. 有不确定性就加误差带/置信区间。
  5. 导出矢量图(.pdf/.svg)放进论文。

六、何时用 / 何时不用 / 常见丑图

  • 何时用:要表达『怎么变』『随 X 增大 Y 怎么走』。
  • 何时不用:横轴是类别而非有序量 → 改用柱状图。
  • 常见丑图:线太多无图例、无单位、截断纵轴误导。

七、常见坑

  • 横轴无序还连成线 → 假趋势
  • 多条线不区分 → 一团乱
  • 纵轴从非零截断 → 夸大变化

八、画图自检清单

  • 横轴确为有序量
  • 多线有图例与线型区分
  • 有标题/单位/网格
  • 关键拐点已标注
  • 矢量导出

九、配套资源与搭配

  • 论文图表规范与排版
  • Python 数据可视化模板
  • 预测类问题怎么选方法

本指南由 MCM520 资料站自动生成(深度版),配套论文图表规范与可视化模板可在资源页下载。

十、实战案例——Python 绘制 + 图效果

在数学建模中,很多算法需要迭代求解(如神经网络、梯度下降)。
折线图是展示误差随迭代次数下降趋势的最佳选择。

案例场景:比较 AHP-熵权法与 CRITIC 法在评价问题中的误差收敛速度。
横轴=迭代次数,纵轴=评估误差,两条线对比。

完整代码(Python + matplotlib)

import matplotlib.pyplot as plt

iters = list(range(0, 31, 3))
ahp = [0.95, 0.89, 0.83, 0.77, 0.71, 0.65, 0.59, 0.53, 0.47, 0.41, 0.35]
critic = [0.90, 0.84, 0.78, 0.72, 0.66, 0.60, 0.54, 0.48, 0.42, 0.36, 0.30]

plt.figure(figsize=(8, 4))
plt.plot(iters, ahp, 'o-', color='#2563eb', linewidth=2.5, label='AHP-熵权法')
plt.plot(iters, critic, 's-', color='#dc2626', linewidth=2.5, label='CRITIC法')
plt.xlabel('迭代次数', fontsize=12)
plt.ylabel('评估误差', fontsize=12)
plt.title('两种方法误差收敛对比', fontsize=14, fontweight='bold')
plt.legend(fontsize=11)
plt.grid(alpha=0.3)
plt.tight_layout()
plt.show()

运行效果图

图X2  两种方法误差收敛折线图


本指南由 MCM520 资料站生成,配套 Python 代码可直接运行。