Matplotlib绘图应优先使用面向对象方式:先创建Figure,再获取Axes对象,所有绘图及设置操作均在ax上完成;核心在于理解Figure→Axes→Artist层级和OO与pyplot两种接口风格。

Matplotlib 是 Python 最成熟、最常用的二维绘图库,掌握其基础语法和常见绘图逻辑,就能快速将数据转化为清晰、专业的图表。重点不在记住所有参数,而在于理解“对象层级结构”(Figure → Axes → Artist)和“两种接口风格”(面向对象 vs pyplot 简写),再配合实际需求组合使用。
核心绘图流程:从 figure 到 plot
推荐始终使用面向对象(OO)方式,代码更可控、易复用、适合复杂图表:
- 先调用 plt.figure() 创建画布(Figure),可指定大小、DPI 等
- 再用 fig.add_subplot(111) 或 plt.subplots() 获取坐标轴对象(Axes)——这才是真正绘图的“画板”
- 所有绘图操作(如 ax.plot()、ax.scatter()、ax.bar())都作用于这个 ax 对象
- 设置标题、标签、图例等也通过 ax 的方法完成,例如 ax.set_title()、ax.legend()
常用图表类型与关键参数
不同图表关注的数据关系不同,参数侧重也不同:
-
折线图(plot):强调趋势。注意 marker(标记点形状)、linestyle(线型)、color(颜色)可直接传字符串如
'ro--'(红色圆点+虚线) - 散点图(scatter):强调分布与相关性。用 c 参数映射第三维(如数值大小或类别),配合 cmap 设置颜色映射
- 柱状图(bar / barh):强调分类对比。注意 width 控制柱宽,align='center' 是默认对齐方式;多组柱状图需手动调整 x 坐标偏移
- 直方图(hist):观察数值分布。关键在 bins(分组数)和 density=True(归一化为概率密度)
让图表更专业:标签、图例与布局
默认样式往往不够清晰,几处调整立竿见影:
MATLAB(矩阵实验室)是MATrix LABoratory的缩写,是一款由美国The MathWorks公司出品的商业数学软件。MATLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。除了矩阵运算、绘制函数/数据图像等常用功能外,MATLAB还可以用来创建用户界面及与调用其它语言(包括C,C++和FORTRAN)编写的程序。MATLAB基础知识;命令窗口是用户与MATLAB进行交互作业的主要场所,用户输入的MATLAB交互命令均在命令窗口执行。 感兴趣的朋友可以
立即学习“Python免费学习笔记(深入)”;
- 坐标轴标签用 ax.set_xlabel() 和 ax.set_ylabel(),字体大小可用 fontsize=12
- 中文显示需提前设置字体:加入 plt.rcParams['font.sans-serif'] = ['SimHei', 'DejaVu Sans'] 并关闭负号异常:plt.rcParams['axes.unicode_minus'] = False
- 图例位置不遮挡数据:用 ax.legend(loc='upper right'),或更灵活的 bbox_to_anchor=(1.05, 1) 移到图外
- 子图紧凑排布:绘图后调用 plt.tight_layout() 自动调整间距,避免标签被截断
一个完整案例:销售数据趋势+分布双视图
用一份模拟月度销售额数据,同时展示趋势(折线)和分布特征(直方图):
(代码示意,非可运行全量)
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(8, 6))
# 上图:月度趋势
ax1.plot(months, sales, 'b-o', linewidth=2, markersize=4)
ax1.set_ylabel('销售额(万元)')
ax1.grid(True, alpha=0.3)
下图:分布直方图
ax2.hist(sales, bins=8, color='lightcoral', edgecolor='darkred', alpha=0.7)
ax2.set_xlabel('销售额区间')
ax2.set_ylabel('频次')
ax2.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()









