mcpField
M
matplotlib-best-practices

matplotlib-best-practices

github.com/mindrally数据与数据库2871.0k 次安装3 周前更新
代码仓库

关于 matplotlib-best-practices

为使用 Matplotlib 绘图的 Python 开发者提供实用指南,涵盖图表选择、布局、无障碍配色和导出设置,也适用于探索性绘图与正式图表制作。

主要功能

  1. 01面向对象绘图指南
  2. 02图表类型选择
  3. 03标签与注释
  4. 04无障碍配色
  5. 05布局与导出设置
  6. 06渲染性能建议

适用场景

  1. 01在 Jupyter notebooks 中探索数据
  2. 02制作出版用图表
  3. 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