mindrally

matplotlib-best-practices

3
0
# Install this skill:
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

  • 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 inline in 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 gridspec for complex, non-uniform layouts
  • Share axes with sharex=True, sharey=True for comparison
  • Use constrained_layout=True or tight_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 facecolor for background color
  • Specify dpi appropriate for use case
  • Use transparent=True for overlays

Performance Optimization

  • Use rasterized=True for 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.