图表选择可视化指南:折线图:看趋势与变化(深度版)
展示一个或多个变量随时间/顺序的变化趋势,是建模论文里最常用、最该先想到的图。
分类:📈 基础图 适用:时间序列趋势、算法收敛曲线、多方案对比走势
一、这个图适合谁(适用场景)
- 时间序列趋势
- 算法收敛曲线
- 多方案对比走势
二、图表结构要素
- 横轴=有序变量(时间/迭代)
- 纵轴=观测值
- 多条线=多序列
- 可加误差带
三、可视化的底层逻辑
折线图之所以是"趋势表达首选",是因为它用的是人类感知精度最高的视觉通道之一——沿共同量表的垂直位置(position)。Cleveland & McGill(1984)的经典实验把图表通道按人的判断误差从低到高排了序:位置/长度最优,角度、面积、体积次之,颜色饱和度与色相最弱。折线图把每个数据点放在共享纵轴上,读者靠"比较两个点的高度差"就能精确读出变化,这正落在最优通道档。它表达的是"沿有序轴的连续变化",所以横轴必须有序——把无序类别连成线,等于用最高精度通道去编码本不该连成趋势的东西,制造假趋势。核心思想:用感知精度最高的通道,去承载最该被准确读取的信息(方向、斜率、拐点)。
四、视觉编码与感知推导
感知精度档(Cleveland-McGill):通道判断误差 随精度档递减:
折线图的"垂直位置"属第一档,故趋势判断最准。反观"用颜色深浅表示数值"属末档,误差可高出数倍——这正是热力图必须加数值标注的原因。
斜率知觉阈值:人在折线图上对拐点斜率变化的察觉,需斜率差 超过感知阈值 :
故关键拐点处应标注数值或放大局部,否则细微但重要的变化易被忽略。
数据墨水比(Tufte):图表有效信息效率
应最大化——去掉多余网格线、三维装饰、边框,把墨水留给真正编码数据的线。这也是"加误差带而非花哨特效"的理论支撑:误差带增加的墨水直接服务"不确定性"这一数据信息。
五、怎么画(步骤)
- 确认横轴是有序的(时间、epoch、样本序号),否则别用折线。
- 多条线用不同颜色+图例,线型区分(实/虚)增强可读性。
- 加标题、坐标轴单位、网格线;关键拐点标注。
- 有不确定性就加误差带/置信区间。
- 导出矢量图(.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()
运行效果图
本指南由 MCM520 资料站生成,配套 Python 代码可直接运行。