Scientific Visualization
mims-harvard/OptimusKG
Create publication figures with matplotlib/seaborn/plotly. An agent skill from mims-harvard/OptimusKG.
Low-level plotting library for full customization. An agent skill from zLanqing/codex-claude-academic-skills.
$ npx skills add zLanqing/codex-claude-academic-skills --skill matplotlib -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install zLanqing/codex-claude-academic-skills matplotlib --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/zLanqing/codex-claude-academic-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/scientific-toolkit-skill/references/scientific-skills/matplotlib .claude/skills/matplotlib && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "matplotlib" agent skill from https://github.com/zLanqing/codex-claude-academic-skills/tree/main/scientific-toolkit-skill/references/scientific-skills/matplotlib into .claude/skills/matplotlib/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "matplotlib", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/zLanqing/codex-claude-academic-skills/tree/main/scientific-toolkit-skill/references/scientific-skills/matplotlibType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add zLanqing/codex-claude-academic-skills --skill matplotlib -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install zLanqing/codex-claude-academic-skills matplotlib --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/zLanqing/codex-claude-academic-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/scientific-toolkit-skill/references/scientific-skills/matplotlib .agents/skills/matplotlib && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "matplotlib" agent skill from https://github.com/zLanqing/codex-claude-academic-skills/tree/main/scientific-toolkit-skill/references/scientific-skills/matplotlib into .agents/skills/matplotlib/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "matplotlib", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add zLanqing/codex-claude-academic-skills --skill matplotlib -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install zLanqing/codex-claude-academic-skills matplotlib --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/zLanqing/codex-claude-academic-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/scientific-toolkit-skill/references/scientific-skills/matplotlib .cursor/skills/matplotlib && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "matplotlib" agent skill from https://github.com/zLanqing/codex-claude-academic-skills/tree/main/scientific-toolkit-skill/references/scientific-skills/matplotlib into .cursor/skills/matplotlib/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "matplotlib", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/zLanqing/codex-claude-academic-skills.git --path scientific-toolkit-skill/references/scientific-skills/matplotlib--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add zLanqing/codex-claude-academic-skills --skill matplotlib -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install zLanqing/codex-claude-academic-skills matplotlib --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/zLanqing/codex-claude-academic-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/scientific-toolkit-skill/references/scientific-skills/matplotlib .gemini/skills/matplotlib && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "matplotlib" agent skill from https://github.com/zLanqing/codex-claude-academic-skills/tree/main/scientific-toolkit-skill/references/scientific-skills/matplotlib into .gemini/skills/matplotlib/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "matplotlib", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install zLanqing/codex-claude-academic-skills matplotlibInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add zLanqing/codex-claude-academic-skills --skill matplotlib -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/zLanqing/codex-claude-academic-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/scientific-toolkit-skill/references/scientific-skills/matplotlib .github/skills/matplotlib && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "matplotlib" agent skill from https://github.com/zLanqing/codex-claude-academic-skills/tree/main/scientific-toolkit-skill/references/scientific-skills/matplotlib into .github/skills/matplotlib/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "matplotlib", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add zLanqing/codex-claude-academic-skills --skill matplotlib -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install zLanqing/codex-claude-academic-skills matplotlib --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/zLanqing/codex-claude-academic-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/scientific-toolkit-skill/references/scientific-skills/matplotlib .opencode/skills/matplotlib && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "matplotlib" agent skill from https://github.com/zLanqing/codex-claude-academic-skills/tree/main/scientific-toolkit-skill/references/scientific-skills/matplotlib into .opencode/skills/matplotlib/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "matplotlib", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
matplotlibLow-level plotting library for full customization. An agent skill from zLanqing/codex-claude-academic-skills.
Matplotlib is an agent skill from zLanqing/codex-claude-academic-skills. Low-level plotting library for full customization. Use when you need fine-grained control over every plot element, creating novel plot types, or integrating with specific scientific workflows. Export to PNG/PDF/SVG for publication. For quick statistical plots use seaborn; for interactive plots use plotly; for publication-ready multi-panel figures with journal styling, use scientific-visualization.
Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including scripts and reference files (for example `references/api_reference.md`, `references/common_issues.md` and `references/plot_types.md`).
It sits in Data & Analytics, covering Data visualization. It works with Matplotlib, Plotly and Seaborn. The repository describes itself as: 本仓库包含三个面向学术科研人员的Skills,覆盖从文献阅读、论文写作到科学计算的完整研究工作流。office-academic-skill 负责论文阅读报告与学术 PPT/Word 文档生成;research-writing-skill 提供论文写作、润色与审稿回复辅助;scientific-toolkit-skill 整合 MATLAB/Python… The licence is MIT.
12 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 7ed6377. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 2 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
pythonFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
matplotlib.orgFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Matplotlib loads about 2.9k tokens when it runs, and up to ~15k if it reads all its reference files. Until then it costs about 103 tokens; SKILL.md has 742 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from zLanqing/codex-claude-academic-skills at commit 7ed6377, republished under its MIT licence (© zLanqing). 742 words, ~2,864 tokens.
.claude/skills/matplotlib/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.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.
This skill should be used when:
Matplotlib uses a hierarchical structure of objects:
1. pyplot Interface (Implicit, MATLAB-style)
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4])
plt.ylabel('some numbers')
plt.show()2. Object-Oriented Interface (Explicit)
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([1, 2, 3, 4])
ax.set_ylabel('some numbers')
plt.show()Single plot workflow:
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()Creating subplot layouts:
# 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 columnsLine plots - Time series, continuous data, trends
ax.plot(x, y, linewidth=2, linestyle='--', marker='o', color='blue')Scatter plots - Relationships between variables, correlations
ax.scatter(x, y, s=sizes, c=colors, alpha=0.6, cmap='viridis')Bar charts - Categorical comparisons
ax.bar(categories, values, color='steelblue', edgecolor='black')
# For horizontal bars:
ax.barh(categories, values)Histograms - Distributions
ax.hist(data, bins=30, edgecolor='black', alpha=0.7)Heatmaps - Matrix data, correlations
im = ax.imshow(matrix, cmap='coolwarm', aspect='auto')
plt.colorbar(im, ax=ax)Contour plots - 3D data on 2D plane
contour = ax.contour(X, Y, Z, levels=10)
ax.clabel(contour, inline=True, fontsize=8)Box plots - Statistical distributions
ax.boxplot([data1, data2, data3], labels=['A', 'B', 'C'])Violin plots - Distribution densities
ax.violinplot([data1, data2, data3], positions=[1, 2, 3])For comprehensive plot type examples and variations, refer to references/plot_types.md.
Color specification methods:
'red', 'blue', 'steelblue''#FF5733'(0.1, 0.2, 0.3)cmap='viridis', cmap='plasma', cmap='coolwarm'Using style sheets:
plt.style.use('seaborn-v0_8-darkgrid') # Apply predefined style
# Available styles: 'ggplot', 'bmh', 'fivethirtyeight', etc.
print(plt.style.available) # List all available stylesCustomizing with rcParams:
plt.rcParams['font.size'] = 12
plt.rcParams['axes.labelsize'] = 14
plt.rcParams['axes.titlesize'] = 16
plt.rcParams['xtick.labelsize'] = 10
plt.rcParams['ytick.labelsize'] = 10
plt.rcParams['legend.fontsize'] = 12
plt.rcParams['figure.titlesize'] = 18Text and annotations:
ax.text(x, y, 'annotation', fontsize=12, ha='center')
ax.annotate('important point', xy=(x, y), xytext=(x+1, y+1),
arrowprops=dict(arrowstyle='->', color='red'))For detailed styling options and colormap guidelines, see references/styling_guide.md.
Export to various formats:
# High-resolution PNG for presentations/papers
plt.savefig('figure.png', dpi=300, bbox_inches='tight', facecolor='white')
# Vector format for publications (scalable)
plt.savefig('figure.pdf', bbox_inches='tight')
plt.savefig('figure.svg', bbox_inches='tight')
# Transparent background
plt.savefig('figure.png', dpi=300, bbox_inches='tight', transparent=True)Important parameters:
dpi: Resolution (300 for publications, 150 for web, 72 for screen)bbox_inches='tight': Removes excess whitespacefacecolor='white': Ensures white background (useful for transparent themes)transparent=True: Transparent backgroundfrom mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection='3d')
# Surface plot
ax.plot_surface(X, Y, Z, cmap='viridis')
# 3D scatter
ax.scatter(x, y, z, c=colors, marker='o')
# 3D line plot
ax.plot(x, y, z, linewidth=2)
# Labels
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')fig, ax = plt.subplots(figsize=(10, 6))constrained_layout=True or tight_layout() to prevent overlapping elementsfig, ax = plt.subplots(constrained_layout=True) is recommended for automatic spacingrasterized=True in plot calls to reduce file size# Good practice: Clear structure
def create_analysis_plot(data, title):
"""Create standardized analysis plot."""
fig, ax = plt.subplots(figsize=(10, 6), constrained_layout=True)
# Plot data
ax.plot(data['x'], data['y'], linewidth=2)
# Customize
ax.set_xlabel('X Axis Label', fontsize=12)
ax.set_ylabel('Y Axis Label', fontsize=12)
ax.set_title(title, fontsize=14, fontweight='bold')
ax.grid(True, alpha=0.3)
return fig, ax
# Use the function
fig, ax = create_analysis_plot(my_data, 'My Analysis')
plt.savefig('analysis.png', dpi=300, bbox_inches='tight')This skill includes helper scripts in the scripts/ directory:
plot_template.pyTemplate script demonstrating various plot types with best practices. Use this as a starting point for creating new visualizations.
Usage:
python scripts/plot_template.pystyle_configurator.pyInteractive utility to configure matplotlib style preferences and generate custom style sheets.
Usage:
python scripts/style_configurator.pyFor comprehensive information, consult the reference documents:
references/plot_types.md - Complete catalog of plot types with code examples and use casesreferences/styling_guide.md - Detailed styling options, colormaps, and customizationreferences/api_reference.md - Core classes and methods referencereferences/common_issues.md - Troubleshooting guide for common problemsMatplotlib integrates well with:
%matplotlib inline or %matplotlib widgetconstrained_layout=True or tight_layout()plt.close(fig)plt.rcParams['font.sans-serif']pixels = dpi * inches© zLanqing, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 6 other files (scripts, references) in scientific-toolkit-skill/references/scientific-skills/matplotlib of zLanqing/codex-claude-academic-skills.
Open the folder on GitHubat commit 7ed6377
We found 30 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 17 other GitHub owners. This page covers the copy in zLanqing/codex-claude-academic-skills, which our catalogue first saw on October 7, 2026.
Matplotlib next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Matplotlib this skillzLanqing/codex-claude-academic-skills | 4.6k | 17 repos | ~2.9k | Automated safety check: Pass | MIT | |
| Scientific Visualizationmims-harvard/OptimusKG | 146 | 19 repos | ~6.3k | Automated safety check: Pass | MIT | |
| CJK Font Setup for Plotsxjtulyc/MedgeClaw | 617 | 1 repos | ~1.3k | Automated safety check: Pass | None | |
| Tufte Data Vizcaylent/tufte-data-viz | 222 | — | ~3.5k | Automated safety check: Pass | MIT | |
| Scientific VisualizationOleafly/Oleafly | 205 | — | ~3.4k | Automated safety check: Notes | MIT | |
| Chart Type Selection Guidepipeshub-ai/pipeshub-ai | 3.8k | — | ~1.1k | Automated safety check: Pass | Apache-2.0 |
mims-harvard/OptimusKG
Create publication figures with matplotlib/seaborn/plotly. An agent skill from mims-harvard/OptimusKG.
xjtulyc/MedgeClaw
Detects a usable Chinese, Japanese or Korean font and configures matplotlib so chart labels, titles and legends render instead of showing empty boxes.
caylent/tufte-data-viz
A skill your agent uses when creating, reviewing, or styling charts, graphs, dashboards, sparklines, or any data visualization.
Oleafly/Oleafly
Create and audit truthful, accessible, publication-ready scientific figures with Matplotlib, Seaborn, or Plotly.
pipeshub-ai/pipeshub-ai
Picks the right chart type for a data question and applies readability rules like axis labels, colorblind palettes and legend restraint.
K-Dense-AI/scientific-agent-skills
Creates and audits truthful, accessible, publication-ready scientific figures with Matplotlib, Seaborn, or Plotly.
zLanqing/codex-claude-academic-skills
Machine learning in Python with scikit-learn. An agent skill from zLanqing/codex-claude-academic-skills.
zLanqing/codex-claude-academic-skills
Process-based discrete-event simulation framework in Python.
zLanqing/codex-claude-academic-skills
Comprehensive toolkit for creating, analyzing, and visualizing complex networks and graphs in Python.
zLanqing/codex-claude-academic-skills
Statistical visualization with pandas integration. An agent skill from zLanqing/codex-claude-academic-skills.
zLanqing/codex-claude-academic-skills
Zero-shot time series forecasting with Google's TimesFM foundation model.
zLanqing/codex-claude-academic-skills
Statistical models library for Python. An agent skill from zLanqing/codex-claude-academic-skills.
Works with
Categories
Low-level plotting library for full customization. An agent skill from zLanqing/codex-claude-academic-skills. Matplotlib is an agent skill from zLanqing/codex-claude-academic-skills. Low-level plotting library for full customization.
Matplotlib fits situations like: you need fine-grained control over every plot element; creating novel plot types; integrating with specific scientific workflows.
Run `npx skills add zLanqing/codex-claude-academic-skills --skill matplotlib -a claude-code`. Or copy the skill folder (scientific-toolkit-skill/references/scientific-skills/matplotlib in zLanqing/codex-claude-academic-skills) into .claude/skills/matplotlib in your project. Claude Code loads it when a task matches its description.
Run `npx skills add zLanqing/codex-claude-academic-skills --skill matplotlib -a codex`. Or copy the skill folder (scientific-toolkit-skill/references/scientific-skills/matplotlib in zLanqing/codex-claude-academic-skills) into .agents/skills/matplotlib in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add zLanqing/codex-claude-academic-skills --skill matplotlib -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/matplotlib, .gemini/skills/matplotlib, .github/skills/matplotlib and .opencode/skills/matplotlib in your project.
Going by SKILL.md and its folder, Matplotlib needs Python for the scripts in its folder and the command-line tools its instructions call (python). Our summary lists: Python 3.
SKILL.md names 1 domain. As links in the text: matplotlib.org. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Matplotlib is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.9k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 12k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Matplotlib: Scientific Visualization (mims-harvard/OptimusKG, 146 stars), CJK Font Setup for Plots (xjtulyc/MedgeClaw, 617 stars), Tufte Data Viz (caylent/tufte-data-viz, 222 stars) and Scientific Visualization (Oleafly/Oleafly, 205 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
zLanqing (a GitHub user) maintains it in zLanqing/codex-claude-academic-skills, which has 4,578 GitHub stars. The repository holds 17 skills in this directory. The repository was last updated on May 14, 2026.
Source: zLanqing/codex-claude-academic-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.