Manage Apple Reminders via the `remindctl` CLI on macOS (list, add, edit, complete, delete)....
npx skills add Mindrally/skills --skill "matplotlib-best-practices"
Install specific skill from multi-skill repository
# Description
Best practices for Matplotlib data visualization, plotting, and creating publication-quality figures in Python
# SKILL.md
name: matplotlib-best-practices
description: Best practices for Matplotlib data visualization, plotting, and creating publication-quality figures in Python
Matplotlib Best Practices
Expert guidelines for Matplotlib development, focusing on data visualization, plotting, and creating publication-quality figures.
Code Style and Structure
- Write concise, technical Python code with accurate Matplotlib examples
- Create informative and visually appealing plots with proper labels, titles, and legends
- Use the object-oriented API for complex figures, pyplot for quick plots
- Follow PEP 8 style guidelines
- Consider color-blindness accessibility in all visualizations
API Approaches
Object-Oriented Interface (Recommended)
- Use
fig, ax = plt.subplots()for explicit control - Preferred for complex figures and production code
- Methods are called on axes objects:
ax.plot(),ax.set_xlabel() - Enables multiple subplots and fine-grained customization
Pyplot Interface
- Use
plt.plot(),plt.xlabel()for quick, interactive plots - Suitable for Jupyter notebooks and exploration
- Use
%matplotlib inlinein Jupyter notebooks
Creating Effective Visualizations
Plot Types and Selection
- Line plots (
ax.plot()) for continuous data and trends - Scatter plots (
ax.scatter()) for relationship between variables - Bar plots (
ax.bar(),ax.barh()) for categorical comparisons - Histograms (
ax.hist()) for distributions - Box plots (
ax.boxplot()) for statistical summaries - Heatmaps (
ax.imshow(),ax.pcolormesh()) for 2D data
Labels and Annotations
- Always include axis labels with units
- Use descriptive titles that convey the message
- Add legends when multiple series are present
- Use annotations (
ax.annotate()) to highlight key points - Include data source attribution when appropriate
Color and Style
- Use colorblind-friendly palettes (e.g., 'viridis', 'plasma', 'cividis')
- Avoid red-green combinations for accessibility
- Use consistent colors for the same categories across figures
- Use appropriate colormaps for data type:
- Sequential: 'viridis', 'plasma' for continuous data
- Diverging: 'RdBu', 'coolwarm' for data with meaningful center
- Qualitative: 'Set1', 'tab10' for categorical data
Figure Layout and Composition
Subplots
- Use
plt.subplots(nrows, ncols)for grid layouts - Use
gridspecfor complex, non-uniform layouts - Share axes with
sharex=True,sharey=Truefor comparison - Use
constrained_layout=Trueortight_layout()to prevent overlap
Figure Size and Resolution
- Set figure size explicitly:
figsize=(width, height)in inches - Use appropriate DPI for intended output (72 screen, 300+ print)
- Standard sizes: (10, 6) for presentations, (8, 6) for papers
Customization
Style Sheets
- Use built-in styles:
plt.style.use('seaborn-v0_8'),'ggplot' - Create custom style files for consistent branding
- Combine styles:
plt.style.use(['seaborn-v0_8', 'custom.mplstyle'])
Text and Fonts
- Use LaTeX for mathematical notation:
r'$\alpha = \frac{1}{2}$' - Set font family for consistency
- Adjust font sizes for readability at intended display size
Saving and Exporting
File Formats
- Use vector formats (PDF, SVG, EPS) for publications
- Use PNG for web and presentations with transparency
- Use JPEG only for photographs (lossy compression)
Export Settings
- Use
bbox_inches='tight'to remove excess whitespace - Set
facecolorfor background color - Specify
dpiappropriate for use case - Use
transparent=Truefor overlays
Performance Optimization
- Use
rasterized=Truefor scatter plots with many points - Consider downsampling data for visualization
- Close figures with
plt.close()after saving - Use
plt.close('all')in loops creating many figures
Key Conventions
- Import as
import matplotlib.pyplot as plt - Use object-oriented API for production code
- Always label axes and include units
- Test visualizations at intended display size
- Consider accessibility in color choices
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.