前言
为了让 Matplotlib 绘图代码更规范、易读,且为后期图形完善预留空间,建议遵循一些规范绘图方法。😉
1.管理图形对象
建议使用 plt.figure() 或者 plt.subplots() 管理完整的图形对象,而非直接用 plt.plot(...) 绘图。这样能为添加图例、样式、标注等预留空间,使代码更规范、可读性更强。
2.添加图标题、图例
fig, axes = plt.subplots()
axes.set_xlabel('x label') # 横轴名称
axes.set_ylabel('y label')
axes.set_title('title') # 图形名称
axes.plot(x, x**2)
axes.plot(x, x**3)
axes.legend(["y = x**2", "y = x**3"], loc=0) # 图例
set_xlabel()和set_ylabel()分别设置横轴和纵轴的名称。set_title()设置图形的标题。legend()用于添加图例,loc参数标记图例位置:1 代表右上角、2 代表左上角、3 代表左下角、4 代表右下角,0 代表自适应。

3.线型、颜色、透明度设置
颜色与透明度
fig, axes = plt.subplots()
axes.plot(x, x+1, color="red", alpha=0.5)
axes.plot(x, x+2, color="#1155dd")
axes.plot(x, x+3, color="#15cc55")
color参数可使用颜色名称(如"red")或十六进制颜色码(如"#1155dd")设置线的颜色。alpha参数设置线的透明度,取值范围为[0, 1]。

线型与线宽
fig, ax = plt.subplots(figsize=(12, 6))
# 线宽
ax.plot(x, x+1, color="blue", linewidth=0.25)
# 虚线类型
ax.plot(x, x+5, color="red", lw=2, linestyle='-')
# 虚线交错宽度
line, = ax.plot(x, x+8, color="black", lw=1.50)
line.set_dashes([5, 10, 15, 10])
linewidth(可缩写为lw)设置线的宽度。linestyle(可缩写为ls)设置线型,如'-'表示实线,'-.'表示点划线,':'表示虚线。set_dashes()方法可自定义虚线的交错宽度。

符号设置
fig, ax = plt.subplots(figsize=(12, 6))
ax.plot(x, x + 9, color="green", lw=2, ls='--', marker='+')
# 符号大小和颜色
ax.plot(x, x+15, color="purple", lw=1, ls='-',marker='o', markersize=8, markerfacecolor="red")
marker参数设置标记符号,如'+'、'o'、's'等。markersize设置标记符号的大小。markerfacecolor设置标记符号内部的颜色。markeredgewidth设置标记符号边缘的宽度。markeredgecolor设置标记符号边缘的颜色。

4.画布网格、坐标轴范围设置
fig, axes = plt.subplots(1, 2, figsize=(10, 5))
# 显示网格
axes[0].plot(x, x**2, x, x**3, lw=2)
axes[0].grid(True)
# 设置坐标轴范围
axes[1].plot(x, x**2, x, x**3)
axes[1].set_ylim([0, 60])
axes[1].set_xlim([2, 5])
grid(True)显示画布网格。set_ylim()和set_xlim()分别设置纵轴和横轴的范围。

5.绘制不同类型子图
n = np.array([0, 1, 2, 3, 4, 5])
fig, axes = plt.subplots(1, 4, figsize=(16, 5))
axes[0].scatter(x, x + 0.25*np.random.randn(len(x)))
axes[0].set_title("scatter")
axes[1].step(n, n**2, lw=2)
axes[1].set_title("step")
axes[2].bar(n, n**2, align="center", width=0.5, alpha=0.5)
axes[2].set_title("bar")
axes[3].fill_between(x, x**2, x**3, color="green", alpha=0.5)
axes[3].set_title("fill_between")
scatter()绘制散点图。step()绘制梯步图。bar()绘制条形图,align参数设置条形的对齐方式,width设置条形的宽度。fill_between()绘制面积图,填充两条曲线之间的区域。
