Matplotlib Python 绘图库

精选 'Matplotlib Python 绘图库' 常用指令与核心速查备忘单,涵盖高频用法、配置参数与实用技巧。

#🚀 入门指引

#导入模块 (Importing)

import matplotlib.pyplot as plt  # 核心绘图库
import numpy as np               # 用于数值计算

#绘制基础图表 (Basic Plot)

x = np.linspace(0, 10, 100)      # 生成 0 至 10 之间的 100 个点
y = np.sin(x)                    # 正弦函数值
plt.plot(x, y)                   # 创建折线图
plt.show()                       # 显示图表窗口

#📊 图表类型 (Plot Types)

#折线图 (Line Plot)

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()

#散点图 (Scatter Plot)

plt.scatter(x, y)               # 绘制散点图
plt.title("Scatter Plot")
plt.show()

#柱状图 (Bar Plot)

categories = ['A', 'B', 'C']
values = [10, 20, 15]
plt.bar(categories, values)     # 绘制垂直柱状图
plt.title("Bar Chart")
plt.show()

#水平条形图 (Horizontal Bar Plot)

plt.barh(categories, values)    # 绘制水平条形图
plt.title("Horizontal Bar Chart")
plt.show()

#直方图 (Histogram)

data = np.random.randn(1000)    # 生成正态分布随机数
plt.hist(data, bins=30)         # 绘制 30 个分箱的直方图
plt.title("Histogram")
plt.show()

#饼图 (Pie Chart)

sizes = [25, 35, 20, 20]
labels = ['A', 'B', 'C', 'D']
plt.pie(sizes, labels=labels, autopct='%1.1f%%')  # 带百分比标签的饼图
plt.title("Pie Chart")
plt.show()

#图表自定义 (Customization)

功能特性 代码示例 详细功能说明
设置标题 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

#子图与布局 (Subplots & Layouts)

#多子图组合 (Multiple Subplots)

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()

#图表尺寸 (Figure Size)

plt.figure(figsize=(10, 5))         # 设置画布尺寸(宽、高,单位:英寸)

#⚡ 高级特性与技巧 (Visualizations)

#热力图 (Heatmap)

data = np.random.rand(10, 10)       # 生成 10x10 随机矩阵
plt.imshow(data, cmap='hot', interpolation='nearest')  # 以图像形式显示
plt.colorbar()                      # 显示颜色条刻度
plt.title("Heatmap")
plt.show()

#等高线图 (Contour Plot)

X, Y = np.meshgrid(x, x)
Z = np.sin(X) * np.cos(Y)
plt.contour(X, Y, Z)                # 绘制等高线
plt.title("Contour Plot")
plt.show()

#3D 空间三维图 (3D Plot)

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()

#图像读取与显示 (Working with Images)

import matplotlib.image as mpimg
img = mpimg.imread('image.jpg')     # 加载图像文件
plt.imshow(img)                     # 展示图像
plt.axis('off')                     # 隐藏坐标轴
plt.title("Image Display")
plt.show()

#机器学习专属绘制 (For Machine Learning)

#绘制 Loss 随 Epoch 变化曲线

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()

#混淆矩阵热力图 (Confusion Matrix)

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()

#ROC 曲线绘制 (ROC Curve)

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()

#保存图表 (Saving Plots)

plt.savefig("figure.png", dpi=300, bbox_inches='tight')  # 保存图表至文件

#图像显示与清理 (Show & Clear)

plt.show()     # 弹窗显示图表
plt.clf()      # 清空当前 Figure(在循环绘图时非常有用)
plt.close()    # 关闭 Figure 窗口(在脚本或 GUI 应用中推荐使用)

#实用高级函数 (More Useful Functions)

函数名称 适用场景与功能
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 画布对象