本节介绍在同一图形窗口中展示多条曲线或多块独立坐标区的两种常用方式:将多组数据传入同一 plot 或使用 hold on 追加曲线;以及用 subplot 将窗口划分为 m×n 格子、在各子图中分别绘图。若各曲线量纲相近且需直接比较趋势,宜叠在同一坐标系;若量纲差异大或需并列展示多份独立图表,宜采用子图布局。
同一坐标系:一次 plot 多组数据
x = 0:0.01:10;
plot(x, sin(x), x, cos(x), '.-')
legend('Sin(x)', 'Cos(x)')plot(x1, y1, x2, y2, ...) 中每两组 x、y 对应一条曲线。legend 中的字符串顺序须与曲线绘制顺序一致。
也可分次调用 plot,中间用 hold on 保留已有图形:
x = 0:0.01:10;
plot(x, sin(x), 'r')
hold on
plot(x, cos(x), 'b--')
hold off
legend('sin', 'cos')hold on 表示在当前坐标系中继续绘制;完成后应使用 hold off 恢复默认行为,否则后续新图可能叠在旧图之上。
subplot:划分图形窗口
subplot(m, n, p) 将窗口分为 m 行 n 列,p 为当前激活的子图编号:
x = 0:0.01:5;
y1 = exp(-1.5*x) .* sin(10*x);
y2 = exp(-2*x) .* sin(10*x);
subplot(1, 2, 1)
plot(x, y1), xlabel('x'), ylabel('exp(-1.5x)sin(10x)'), axis([0 5 -1 1])
subplot(1, 2, 2)
plot(x, y2), xlabel('x'), ylabel('exp(-2x)sin(10x)'), axis([0 5 -1 1])各子图拥有独立的坐标系,可分别设置标题、轴标签与 axis 范围。
2×2 布局
subplot(2, 2, p) 形成四个子图,编号按先左后右、先上后下递增:
x = 0:0.01:2*pi;
subplot(2,2,1), plot(x, sin(x)), title('sin')
subplot(2,2,2), plot(x, cos(x)), title('cos')
subplot(2,2,3), plot(x, x.^2/20), title('x^2')
subplot(2,2,4), plot(x, exp(-x)), title('e^-x')叠画与子图的选用
| 场景 | 建议 |
|---|---|
| 多条曲线量纲相同,需直接对比趋势 | 同一坐标系 + legend |
| 量纲差异大,需分别看清各曲线细节 | subplot 分格 |
| 一份材料中需并列多个独立图表 | subplot 分格 |
常见错误
- 使用
hold on后未调用hold off:后续图形可能意外叠在已有曲线上。 legend文字顺序与plot调用顺序不一致:图例与曲线对应关系错误。subplot(2,2,p)编号混淆:1 为左上、2 为右上、3 为左下、4 为右下。
本节说明了同图多曲线与 subplot 子图布局的用法及适用场景。下一节介绍柱状图与统计图形:bar、pie、histogram 等分类与分布可视化。