关于 matplotlib-best-practices
为使用 Matplotlib 绘图的 Python 开发者提供实用指南,涵盖图表选择、布局、无障碍配色和导出设置,也适用于探索性绘图与正式图表制作。
主要功能
- 01面向对象绘图指南
- 02图表类型选择
- 03标签与注释
- 04无障碍配色
- 05布局与导出设置
- 06渲染性能建议
适用场景
- 01在 Jupyter notebooks 中探索数据
- 02制作出版用图表
- 03为网页或演示导出图表
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mindrally/ skills --skill matplotlib-best-practices安装后在 Claude Code 中输入/matplotlib-best-practices确认已加载。
详细介绍
Matplotlib 最佳实践
Matplotlib 开发专家指南,重点关注数据可视化、绘图和创建适合发表的图表。
代码风格与结构
- 编写简洁、技术准确的 Python 代码,并提供准确的 Matplotlib 示例
- 创建信息丰富、视觉效果出色的图表,并设置恰当的标签、标题和图例
- 复杂图表使用面向对象 API,快速绘图使用 pyplot
- 遵循 PEP 8 风格指南
- 在所有可视化中考虑色盲人士的无障碍需求
API 使用方式
面向对象接口(推荐)
- 使用
fig, ax = plt.subplots()进行显式控制 - 适用于复杂图表和生产代码
- 在坐标轴对象上调用方法:
ax.plot()、ax.set_xlabel() - 支持多个子图和细粒度自定义
Pyplot 接口
- 使用
plt.plot()、plt.xlabel()创建快速交互式图表 - 适用于 Jupyter 笔记本和探索性分析
- 在 Jupyter 笔记本中使用
%matplotlib inline
创建有效的可视化
图表类型与选择
- 折线图(
ax.plot())适用于连续数据和趋势 - 散点图(
ax.scatter())适用于展示变量之间的关系 - 条形图(
ax.bar()、ax.barh())适用于类别比较 - 直方图(
ax.hist())适用于展示分布 - 箱线图(
ax.boxplot())适用于统计摘要 - 热图(
ax.imshow()、ax.pcolormesh())适用于二维数据
标签与注释
- 始终为坐标轴添加带单位的标签
- 使用能够传达信息的描述性标题
- 存在多个数据系列时添加图例
- 使用注释(
ax.annotate())突出显示关键点 - 适当注明数据来源
颜色与样式
- 使用适合色盲人士的调色板(例如,'viridis'、'plasma'、'cividis')
- 为满足无障碍需求,避免使用红绿色组合
- 在不同图表中为相同类别使用一致的颜色
- 根据数据类型选择合适的颜色映射:
- 顺序型:连续数据使用 'viridis'、'plasma'
- 发散型:具有有意义中心值的数据使用 'RdBu'、'coolwarm'
- 定性型:类别数据使用 'Set1'、'tab10'
图表布局与构图
子图
- 使用
plt.subplots(nrows, ncols)创建网格布局 - 使用
gridspec创建复杂的非均匀布局 - 使用
sharex=True、sharey=True共享坐标轴以便比较 - 使用
constrained_layout=True或tight_layout()防止内容重叠
图表尺寸与分辨率
- 显式设置图表尺寸:
figsize=(width, height),单位为英寸 - 根据预期输出设置合适的 DPI(屏幕显示为 72,印刷为 300+)
- 标准尺寸:演示文稿使用 (10, 6),论文使用 (8, 6)
自定义
样式表
- 使用内置样式:
plt.style.use('seaborn-v0_8')、'ggplot' - 创建自定义样式文件,以保持品牌风格一致
- 组合多种样式:
plt.style.use(['seaborn-v0_8', 'custom.mplstyle'])
文本与字体
- 使用 LaTeX 表示数学符号:
r'$\alpha = \frac{1}{2}$' - 设置字体系列以保持一致性
- 根据预期显示尺寸调整字号,确保可读性
保存与导出
文件格式
- 发表时使用矢量格式(PDF、SVG、EPS)
- 网页和演示文稿使用支持透明度的 PNG
- 仅对照片使用 JPEG(有损压缩)
导出设置
- 使用
bbox_inches='tight'去除多余空白 - 使用
facecolor设置背景颜色 - 根据使用场景指定合适的
dpi - 叠加图像时使用
transparent=True
性能优化
- 对包含大量点的散点图使用
rasterized=True - 考虑对数据降采样以便可视化
- 保存后使用
plt.close()关闭图表 - 在循环中创建大量图表时使用
plt.close('all')
关键约定
- 使用
import matplotlib.pyplot as plt导入 - 生产代码使用面向对象 API
- 始终标注坐标轴并注明单位
- 在预期显示尺寸下测试可视化效果
- 选择颜色时考虑无障碍需求
评论
支持 Markdown