精选 'Matplotlib Python 绘图库' 常用指令与核心速查备忘单,涵盖高频用法、配置参数与实用技巧。
plt.plot(x, y) # y 关于 x 的折线图
plt.title("Sine Wave") # 设置图表标题
plt.xlabel("x-axis") # 设置 x 轴标签
plt.ylabel("y-axis") # 设置 y 轴标签
plt.grid(True) # 显示网格线
plt.show()
plt.scatter(x, y) # 绘制散点图
plt.title("Scatter Plot")
plt.show()
categories = ['A', 'B', 'C']
values = [10, 20, 15]
plt.bar(categories, values) # 绘制垂直柱状图
plt.title("Bar Chart")
plt.show()
plt.barh(categories, values) # 绘制水平条形图
plt.title("Horizontal Bar Chart")
plt.show()
data = np.random.randn(1000) # 生成正态分布随机数
plt.hist(data, bins=30) # 绘制 30 个分箱的直方图
plt.title("Histogram")
plt.show()
sizes = [25, 35, 20, 20]
labels = ['A', 'B', 'C', 'D']
plt.pie(sizes, labels=labels, autopct='%1.1f%%') # 带百分比标签的饼图
plt.title("Pie Chart")
plt.show()
| 功能特性 | 代码示例 | 详细功能说明 |
|---|---|---|
| 设置标题 Title | plt.title("Title") |
设置图表主标题 |
| X/Y 轴标签 | plt.xlabel("X"), plt.ylabel("Y") |
设置坐标轴文本标签 |
| 网格线 Grid | plt.grid(True) |
显示或隐藏背景网格线 |
| 图例 Legend | plt.legend(["line1"]) |
添加图例说明 |
| 线条样式 | plt.plot(x, y, linestyle='--') |
设置虚线等线条样式 |
| 线条颜色 Color | plt.plot(x, y, color='green') |
设置指定线条颜色 |
| 数据点标记 | plt.plot(x, y, marker='o') |
在数据点处显示图标标记 |
| 坐标轴范围 | plt.xlim(0, 10), plt.ylim(-1, 1) |
设置坐标轴取值显示范围 |
| 刻度标记 | plt.xticks([...]), plt.yticks([...]) |
自定义刻度线位置与文字 |
| 文本标注 | plt.text(5, 0, "Midpoint") |
在指定坐标处添加文本说明 |
| 箭头指示 | plt.annotate("Peak", xy=(7, 1), xytext=(6, 1.5), arrowprops=dict(arrowstyle="->")) |
添加指向性的注释箭头 |
| 主题样式 | plt.style.use('ggplot') |
使用预设的主题样式(如 seaborn, bmh) |
fig, axs = plt.subplots(2, 2) # 创建 2x2 网格的子图
axs[0, 0].plot(x, y) # 左上角子图
axs[0, 1].scatter(x, y) # 右上角子图
axs[1, 0].bar(categories, values) # 左下角子图
axs[1, 1].hist(data) # 右下角子图
plt.tight_layout() # 自动调整间距防止元素重叠
plt.show()
plt.figure(figsize=(10, 5)) # 设置画布尺寸(宽、高,单位:英寸)
data = np.random.rand(10, 10) # 生成 10x10 随机矩阵
plt.imshow(data, cmap='hot', interpolation='nearest') # 以图像形式显示
plt.colorbar() # 显示颜色条刻度
plt.title("Heatmap")
plt.show()
X, Y = np.meshgrid(x, x)
Z = np.sin(X) * np.cos(Y)
plt.contour(X, Y, Z) # 绘制等高线
plt.title("Contour Plot")
plt.show()
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d') # 3D 子图
ax.plot3D(x, y, np.cos(x)) # 3D 空间折线
plt.title("3D Plot")
plt.show()
import matplotlib.image as mpimg
img = mpimg.imread('image.jpg') # 加载图像文件
plt.imshow(img) # 展示图像
plt.axis('off') # 隐藏坐标轴
plt.title("Image Display")
plt.show()
epochs = range(1, 11)
loss = [0.9, 0.7, 0.5, 0.4, 0.3, 0.25, 0.2, 0.18, 0.15, 0.13]
plt.plot(epochs, loss)
plt.title("Training Loss")
plt.xlabel("Epoch")
plt.ylabel("Loss")
plt.show()
from sklearn.metrics import confusion_matrix
import seaborn as sns
y_true = [0, 1, 2, 2, 0]
y_pred = [0, 0, 2, 2, 1]
cm = confusion_matrix(y_true, y_pred) # 计算混淆矩阵
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues') # 热力图可视化
plt.title("Confusion Matrix")
plt.show()
from sklearn.metrics import roc_curve, auc
fpr, tpr, _ = roc_curve([0, 0, 1, 1], [0.1, 0.4, 0.35, 0.8]) # 计算 ROC 参数
roc_auc = auc(fpr, tpr) # 计算 AUC 面积
plt.plot(fpr, tpr, label=f'AUC = {roc_auc:.2f}')
plt.plot([0, 1], [0, 1], 'k--') # 45 度对角线
plt.xlabel("False Positive Rate")
plt.ylabel("True Positive Rate")
plt.title("ROC Curve")
plt.legend()
plt.show()
plt.savefig("figure.png", dpi=300, bbox_inches='tight') # 保存图表至文件
plt.show() # 弹窗显示图表
plt.clf() # 清空当前 Figure(在循环绘图时非常有用)
plt.close() # 关闭 Figure 窗口(在脚本或 GUI 应用中推荐使用)
| 函数名称 | 适用场景与功能 |
|---|---|
plt.fill_between(x, y1, y2) |
填充两条曲线之间的区域 |
plt.axhline(y=value) |
在指定 y 值处绘制水平参考线 |
plt.axvline(x=value) |
在指定 x 值处绘制垂直参考线 |
plt.errorbar(x, y, yerr=...) |
绘制带误差棒的折线图 |
plt.twinx() |
创建共享 x 轴的双 y 轴图表 |
plt.subplots_adjust(...) |
手动调整子图之间的间隔距离 |
plt.gca() |
获取当前 Axes 坐标轴对象 |
plt.gcf() |
获取当前 Figure 画布对象 |