一、Matplotlib简介与核心概念Matplotlib是Python最经典的数据可视化库提供类似MATLAB的绘图接口支持生成出版级质量的图表。其核心模块pyplot通过状态机模式管理图形基础绘图流程遵循“创建画布→绘制图形→展示/保存”的逻辑。import matplotlib.pyplot as plt import numpy as np # 创建数据 x np.linspace(0, 10, 100) y np.sin(x) # 基础绘图流程 plt.figure(figsize(10, 6)) # 创建画布指定尺寸 plt.plot(x, y, labelsin(x)) # 绘制折线图 plt.title(正弦函数曲线) # 添加标题 plt.xlabel(X轴) # X轴标签 plt.ylabel(Y轴) # Y轴标签 plt.legend() # 显示图例 plt.grid(True) # 显示网格 plt.show() # 展示图形二、核心绘图类型实战1. 折线图Line Plot适用于展示数据趋势支持多组数据对比x np.arange(0, 5, 0.1) y1 np.sin(x) y2 np.cos(x) plt.plot(x, y1, colorred, linestyle-, linewidth2, labelsin) plt.plot(x, y2, colorblue, linestyle--, linewidth2, labelcos) plt.title(三角函数对比) plt.xlabel(X轴) plt.ylabel(Y轴) plt.legend(locupper right) # 图例位置 plt.show()2. 散点图Scatter Plot用于观察变量间关系支持颜色/大小映射# 生成随机数据 np.random.seed(42) x np.random.rand(50) y np.random.rand(50) colors np.random.rand(50) # 颜色映射 sizes 1000 * np.random.rand(50) # 点的大小 plt.scatter(x, y, ccolors, ssizes, alpha0.6, cmapviridis) plt.colorbar() # 显示颜色条 plt.title(随机散点图) plt.show()3. 柱状图Bar Chart展示分类数据对比支持堆叠/分组# 分组柱状图 categories [A, B, C, D] values1 [10, 20, 15, 25] values2 [8, 18, 12, 22] x np.arange(len(categories)) width 0.35 plt.bar(x - width/2, values1, width, label组1) plt.bar(x width/2, values2, width, label组2) plt.xlabel(类别) plt.ylabel(数值) plt.title(分组柱状图) plt.xticks(x, categories) plt.legend() plt.show()4. 直方图Histogram展示数据分布自动分箱统计# 生成正态分布数据 data np.random.randn(1000) plt.hist(data, bins30, colorskyblue, edgecolorblack, alpha0.7) plt.title(正态分布直方图) plt.xlabel(数值) plt.ylabel(频数) plt.show()三、高级定制技巧1. 子图布局Subplots通过plt.subplots()创建多子图支持网格布局fig, axs plt.subplots(2, 2, figsize(12, 8)) # 2x2子图 # 绘制不同图形 axs[0, 0].plot(x, np.sin(x)) axs[0, 0].set_title(正弦曲线) axs[0, 1].scatter(x, np.cos(x)) axs[0, 1].set_title(余弦散点) axs[1, 0].bar(categories, values1) axs[1, 0].set_title(柱状图) axs[1, 1].hist(data, bins20) axs[1, 1].set_title(直方图) plt.tight_layout() # 自动调整子图间距 plt.show()2. 样式与主题使用预定义样式或自定义参数plt.style.use(ggplot) # 应用ggplot样式 # 自定义样式 plt.rcParams[font.size] 12 # 全局字体大小 plt.rcParams[axes.unicode_minus] False # 解决负号显示问题 x np.linspace(0, 10, 100) plt.plot(x, np.exp(-x/5) * np.sin(x), color#1f77b4, linewidth3) plt.title(自定义样式示例, fontsize16) plt.show()3. 保存与导出支持多种格式PNG、PDF、SVG等可指定分辨率plt.plot(x, y) plt.title(保存示例) plt.savefig(output.png, dpi300, bbox_inchestight) # 高分辨率保存四、常见问题与解决方案1.中文显示乱码通过plt.rcParams[font.sans-serif] [SimHei]设置中文字体。2.图形重叠使用plt.tight_layout()自动调整布局或手动设置plt.subplots_adjust()。3.性能优化大数据量绘图时使用plt.plot()的rasterizedTrue参数启用光栅化。五、总结Matplotlib通过灵活的API支持从基础到复杂的可视化需求掌握其核心绘图类型、布局管理和样式定制可高效生成专业级图表。结合NumPy数据处理能快速实现数据分析结果的可视化呈现。