
Matplotlib
Install when a solo builder needs publication-quality Python charts with full control over axes, styles, and multi-panel figures exported to PNG, PDF, or SVG.
Install
npx skills add https://github.com/k-dense-ai/scientific-agent-skills --skill matplotlibWhat is this skill?
- Covers pyplot (MATLAB-style) and object-oriented Figure/Axes APIs for fine-grained control
- Line, scatter, bar, histogram, heatmap, contour, 3D, animations, and Jupyter-friendly workflows
- Export to PNG, PDF, and SVG for print and web publication pipelines
- Multi-panel subplots and deep customization of colors, legends, and labels
- Explicit routing: quick stats → seaborn; interactive → plotly; journal multi-panel → scientific-visualization skill
Adoption & trust: 631 installs on skills.sh; 27.6k GitHub stars; 3/3 security scanners passed (skills.sh audits).
Recommended Skills
Journey fit
Canonical shelf is Build because matplotlib is invoked while implementing analysis, notebooks, and documentation artifacts—not during initial market research. Docs fits figures for READMEs, papers, investor decks, and internal reports that ship with the product.
Common Questions / FAQ
Is Matplotlib safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.
SKILL.md
READMESKILL.md - Matplotlib
# Matplotlib ## Overview Matplotlib is Python's foundational visualization library for creating static, animated, and interactive plots. This skill provides guidance on using matplotlib effectively, covering both the pyplot interface (MATLAB-style) and the object-oriented API (Figure/Axes), along with best practices for creating publication-quality visualizations. ## When to Use This Skill This skill should be used when: - Creating any type of plot or chart (line, scatter, bar, histogram, heatmap, contour, etc.) - Generating scientific or statistical visualizations - Customizing plot appearance (colors, styles, labels, legends) - Creating multi-panel figures with subplots - Exporting visualizations to various formats (PNG, PDF, SVG, etc.) - Building interactive plots or animations - Working with 3D visualizations - Integrating plots into Jupyter notebooks or GUI applications ## Core Concepts ### The Matplotlib Hierarchy Matplotlib uses a hierarchical structure of objects: 1. **Figure** - The top-level container for all plot elements 2. **Axes** - The actual plotting area where data is displayed (one Figure can contain multiple Axes) 3. **Artist** - Everything visible on the figure (lines, text, ticks, etc.) 4. **Axis** - The number line objects (x-axis, y-axis) that handle ticks and labels ### Two Interfaces **1. pyplot Interface (Implicit, MATLAB-style)** ```python import matplotlib.pyplot as plt plt.plot([1, 2, 3, 4]) plt.ylabel('some numbers') plt.show() ``` - Convenient for quick, simple plots - Maintains state automatically - Good for interactive work and simple scripts **2. Object-Oriented Interface (Explicit)** ```python import matplotlib.pyplot as plt fig, ax = plt.subplots() ax.plot([1, 2, 3, 4]) ax.set_ylabel('some numbers') plt.show() ``` - **Recommended for most use cases** - More explicit control over figure and axes - Better for complex figures with multiple subplots - Easier to maintain and debug ## Common Workflows ### 1. Basic Plot Creation **Single plot workflow:** ```python import matplotlib.pyplot as plt import numpy as np # Create figure and axes (OO interface - RECOMMENDED) fig, ax = plt.subplots(figsize=(10, 6)) # Generate and plot data x = np.linspace(0, 2*np.pi, 100) ax.plot(x, np.sin(x), label='sin(x)') ax.plot(x, np.cos(x), label='cos(x)') # Customize ax.set_xlabel('x') ax.set_ylabel('y') ax.set_title('Trigonometric Functions') ax.legend() ax.grid(True, alpha=0.3) # Save and/or display plt.savefig('plot.png', dpi=300, bbox_inches='tight') plt.show() ``` ### 2. Multiple Subplots **Creating subplot layouts:** ```python # Method 1: Regular grid fig, axes = plt.subplots(2, 2, figsize=(12, 10)) axes[0, 0].plot(x, y1) axes[0, 1].scatter(x, y2) axes[1, 0].bar(categories, values) axes[1, 1].hist(data, bins=30) # Method 2: Mosaic layout (more flexible) fig, axes = plt.subplot_mosaic([['left', 'right_top'], ['left', 'right_bottom']], figsize=(10, 8)) axes['left'].plot(x, y) axes['right_top'].scatter(x, y) axes['right_bottom'].hist(data) # Method 3: GridSpec (maximum control) from matplotlib.gridspec import GridSpec fig = plt.figure(figsize=(12, 8)) gs = GridSpec(3, 3, figure=fig) ax1 = fig.add_subplot(gs[0, :]) # Top row, all columns ax2 = fig.add_subplot(gs[1:, 0]) # Bottom two rows, first column ax3 = fig.add_subplot(gs[1:, 1:]) # Bottom two rows, last two columns ``` ### 3. Plo