Matplotlib
zLanqing/codex-claude-academic-skills
Low-level plotting library for full customization. An agent skill from zLanqing/codex-claude-academic-skills.
Create publication figures with matplotlib/seaborn/plotly. An agent skill from mims-harvard/OptimusKG.
$ npx skills add mims-harvard/OptimusKG --skill scientific-visualization -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install mims-harvard/OptimusKG scientific-visualization --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/mims-harvard/OptimusKG.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/scientific-visualization .claude/skills/scientific-visualization && 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 "scientific-visualization" agent skill from https://github.com/mims-harvard/OptimusKG/tree/main/.agents/skills/scientific-visualization into .claude/skills/scientific-visualization/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scientific-visualization", 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/mims-harvard/OptimusKG/tree/main/.agents/skills/scientific-visualizationType 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 mims-harvard/OptimusKG --skill scientific-visualization -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install mims-harvard/OptimusKG scientific-visualization --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mims-harvard/OptimusKG.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/scientific-visualization .agents/skills/scientific-visualization && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "scientific-visualization" agent skill from https://github.com/mims-harvard/OptimusKG/tree/main/.agents/skills/scientific-visualization into .agents/skills/scientific-visualization/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scientific-visualization", 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 mims-harvard/OptimusKG --skill scientific-visualization -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install mims-harvard/OptimusKG scientific-visualization --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mims-harvard/OptimusKG.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/scientific-visualization .cursor/skills/scientific-visualization && 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 "scientific-visualization" agent skill from https://github.com/mims-harvard/OptimusKG/tree/main/.agents/skills/scientific-visualization into .cursor/skills/scientific-visualization/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scientific-visualization", 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/mims-harvard/OptimusKG.git --path .agents/skills/scientific-visualization--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 mims-harvard/OptimusKG --skill scientific-visualization -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install mims-harvard/OptimusKG scientific-visualization --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mims-harvard/OptimusKG.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/scientific-visualization .gemini/skills/scientific-visualization && 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 "scientific-visualization" agent skill from https://github.com/mims-harvard/OptimusKG/tree/main/.agents/skills/scientific-visualization into .gemini/skills/scientific-visualization/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scientific-visualization", 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 mims-harvard/OptimusKG scientific-visualizationInstalls 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 mims-harvard/OptimusKG --skill scientific-visualization -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/mims-harvard/OptimusKG.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/scientific-visualization .github/skills/scientific-visualization && 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 "scientific-visualization" agent skill from https://github.com/mims-harvard/OptimusKG/tree/main/.agents/skills/scientific-visualization into .github/skills/scientific-visualization/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scientific-visualization", 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 mims-harvard/OptimusKG --skill scientific-visualization -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install mims-harvard/OptimusKG scientific-visualization --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mims-harvard/OptimusKG.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/scientific-visualization .opencode/skills/scientific-visualization && 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 "scientific-visualization" agent skill from https://github.com/mims-harvard/OptimusKG/tree/main/.agents/skills/scientific-visualization into .opencode/skills/scientific-visualization/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scientific-visualization", 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.
scientific-visualizationCreate publication figures with matplotlib/seaborn/plotly. An agent skill from mims-harvard/OptimusKG.
Scientific Visualization is an agent skill from mims-harvard/OptimusKG. Create publication figures with matplotlib/seaborn/plotly. Multi-panel layouts, error bars, significance markers, colorblind-safe, export PDF/EPS/TIFF, for journal-ready scientific plots.
Its SKILL.md is about 6.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 13 other files, including scripts, reference files and assets (for example `assets/color_palettes.py`, `references/color_palettes.md` and `references/journal_requirements.md`).
It sits in Data & Analytics, covering Data visualization. It works with Seaborn, Matplotlib and Plotly. The repository describes itself as: A modern multimodal knowledge graph with type-specific metadata across biomedical domains. The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 4fb3529. 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.
No URLs in SKILL.md.
From 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.
Scientific Visualization loads about 6.3k tokens when it runs, and up to ~18k if it reads all its reference files. Until then it costs about 53 tokens; SKILL.md has 1,490 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 mims-harvard/OptimusKG at commit 4fb3529, republished under its MIT licence (© mims-harvard). 1,490 words, ~6,323 tokens.
.claude/skills/scientific-visualization/SKILL.md (or your agent's skills folder). This skill also uses 10 other files; get the full folder from GitHub.Scientific visualization transforms data into clear, accurate figures for publication. Create journal-ready plots with multi-panel layouts, error bars, significance markers, and colorblind-safe palettes. Export as PDF/EPS/TIFF using matplotlib, seaborn, and plotly for manuscripts.
This skill should be used when:
import matplotlib.pyplot as plt
import numpy as np
# Apply publication style (from scripts/style_presets.py)
from style_presets import apply_publication_style
apply_publication_style('default')
# Create figure with appropriate size (single column = 3.5 inches)
fig, ax = plt.subplots(figsize=(3.5, 2.5))
# Plot data
x = np.linspace(0, 10, 100)
ax.plot(x, np.sin(x), label='sin(x)')
ax.plot(x, np.cos(x), label='cos(x)')
# Proper labeling with units
ax.set_xlabel('Time (seconds)')
ax.set_ylabel('Amplitude (mV)')
ax.legend(frameon=False)
# Remove unnecessary spines
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
# Save in publication formats (from scripts/figure_export.py)
from figure_export import save_publication_figure
save_publication_figure(fig, 'figure1', formats=['pdf', 'png'], dpi=300)Apply journal-specific styles using the matplotlib style files in assets/:
import matplotlib.pyplot as plt
# Option 1: Use style file directly
plt.style.use('assets/nature.mplstyle')
# Option 2: Use style_presets.py helper
from style_presets import configure_for_journal
configure_for_journal('nature', figure_width='single')
# Now create figures - they'll automatically match Nature specifications
fig, ax = plt.subplots()
# ... your plotting code ...For statistical plots, use seaborn with publication styling:
import seaborn as sns
import matplotlib.pyplot as plt
from style_presets import apply_publication_style
# Apply publication style
apply_publication_style('default')
sns.set_theme(style='ticks', context='paper', font_scale=1.1)
sns.set_palette('colorblind')
# Create statistical comparison figure
fig, ax = plt.subplots(figsize=(3.5, 3))
sns.boxplot(data=df, x='treatment', y='response',
order=['Control', 'Low', 'High'], palette='Set2', ax=ax)
sns.stripplot(data=df, x='treatment', y='response',
order=['Control', 'Low', 'High'],
color='black', alpha=0.3, size=3, ax=ax)
ax.set_ylabel('Response (μM)')
sns.despine()
# Save figure
from figure_export import save_publication_figure
save_publication_figure(fig, 'treatment_comparison', formats=['pdf', 'png'], dpi=300)Critical requirements (detailed in references/publication_guidelines.md):
Implementation:
# Use the figure_export.py script for correct settings
from figure_export import save_publication_figure
# Saves in multiple formats with proper DPI
save_publication_figure(fig, 'myfigure', formats=['pdf', 'png'], dpi=300)
# Or save for specific journal requirements
from figure_export import save_for_journal
save_for_journal(fig, 'figure1', journal='nature', figure_type='combination')Always use colorblind-friendly palettes (detailed in references/color_palettes.md):
Recommended: Okabe-Ito palette (distinguishable by all types of color blindness):
# Option 1: Use assets/color_palettes.py
from color_palettes import OKABE_ITO_LIST, apply_palette
apply_palette('okabe_ito')
# Option 2: Manual specification
okabe_ito = ['#E69F00', '#56B4E9', '#009E73', '#F0E442',
'#0072B2', '#D55E00', '#CC79A7', '#000000']
plt.rcParams['axes.prop_cycle'] = plt.cycler(color=okabe_ito)For heatmaps/continuous data:
viridis, plasma, cividisPuOr, RdBu, BrBG instead)jet or rainbow colormapsAlways test figures in grayscale to ensure interpretability.
Font guidelines (detailed in references/publication_guidelines.md):
Implementation:
# Set fonts globally
import matplotlib as mpl
mpl.rcParams['font.family'] = 'sans-serif'
mpl.rcParams['font.sans-serif'] = ['Arial', 'Helvetica']
mpl.rcParams['font.size'] = 8
mpl.rcParams['axes.labelsize'] = 9
mpl.rcParams['xtick.labelsize'] = 7
mpl.rcParams['ytick.labelsize'] = 7Journal-specific widths (detailed in references/journal_requirements.md):
Check figure size compliance:
from figure_export import check_figure_size
fig = plt.figure(figsize=(3.5, 3)) # 89 mm for Nature
check_figure_size(fig, journal='nature')Best practices:
Example implementation (see references/matplotlib_examples.md for complete code):
from string import ascii_uppercase
fig = plt.figure(figsize=(7, 4))
gs = fig.add_gridspec(2, 2, hspace=0.4, wspace=0.4)
ax1 = fig.add_subplot(gs[0, 0])
ax2 = fig.add_subplot(gs[0, 1])
# ... create other panels ...
# Add panel labels
for i, ax in enumerate([ax1, ax2, ...]):
ax.text(-0.15, 1.05, ascii_uppercase[i], transform=ax.transAxes,
fontsize=10, fontweight='bold', va='top')See references/matplotlib_examples.md Example 1 for complete code.
Key steps:
Using seaborn for automatic confidence intervals:
import seaborn as sns
fig, ax = plt.subplots(figsize=(5, 3))
sns.lineplot(data=timeseries, x='time', y='measurement',
hue='treatment', errorbar=('ci', 95),
markers=True, ax=ax)
ax.set_xlabel('Time (hours)')
ax.set_ylabel('Measurement (AU)')
sns.despine()See references/matplotlib_examples.md Example 2 for complete code.
Key steps:
GridSpec for flexible layoutSee references/matplotlib_examples.md Example 4 for complete code.
Key steps:
viridis, plasma, cividis)RdBu_r, PuOr)Using seaborn for correlation matrices:
import seaborn as sns
fig, ax = plt.subplots(figsize=(5, 4))
corr = df.corr()
mask = np.triu(np.ones_like(corr, dtype=bool))
sns.heatmap(corr, mask=mask, annot=True, fmt='.2f',
cmap='RdBu_r', center=0, square=True,
linewidths=1, cbar_kws={'shrink': 0.8}, ax=ax)Workflow:
references/journal_requirements.mdfrom style_presets import configure_for_journal
configure_for_journal('nature', figure_width='single')from figure_export import save_for_journal
save_for_journal(fig, 'figure1', journal='nature', figure_type='line_art')Checklist approach (full checklist in references/publication_guidelines.md):
Strategy:
assets/color_palettes.pyExample:
from color_palettes import apply_palette
import matplotlib.pyplot as plt
apply_palette('okabe_ito')
# Add redundant encoding beyond color
line_styles = ['-', '--', '-.', ':']
markers = ['o', 's', '^', 'v']
for i, (data, label) in enumerate(datasets):
plt.plot(x, data, linestyle=line_styles[i % 4],
marker=markers[i % 4], label=label)Always include:
Example with statistics:
# Show individual points with summary statistics
ax.scatter(x_jittered, individual_points, alpha=0.4, s=8)
ax.errorbar(x, means, yerr=sems, fmt='o', capsize=3)
# Mark significance
ax.text(1.5, max_y * 1.1, '***', ha='center', fontsize=8)references/matplotlib_examples.md for extensive examplesSeaborn provides a high-level, dataset-oriented interface for statistical graphics, built on matplotlib. It excels at creating publication-quality statistical visualizations with minimal code while maintaining full compatibility with matplotlib customization.
Key advantages for scientific visualization:
Always apply matplotlib publication styles first, then configure seaborn:
import seaborn as sns
import matplotlib.pyplot as plt
from style_presets import apply_publication_style
# Apply publication style
apply_publication_style('default')
# Configure seaborn for publication
sns.set_theme(style='ticks', context='paper', font_scale=1.1)
sns.set_palette('colorblind') # Use colorblind-safe palette
# Create figure
fig, ax = plt.subplots(figsize=(3.5, 2.5))
sns.scatterplot(data=df, x='time', y='response',
hue='treatment', style='condition', ax=ax)
sns.despine() # Remove top and right spinesStatistical comparisons:
# Box plot with individual points for transparency
fig, ax = plt.subplots(figsize=(3.5, 3))
sns.boxplot(data=df, x='treatment', y='response',
order=['Control', 'Low', 'High'], palette='Set2', ax=ax)
sns.stripplot(data=df, x='treatment', y='response',
order=['Control', 'Low', 'High'],
color='black', alpha=0.3, size=3, ax=ax)
ax.set_ylabel('Response (μM)')
sns.despine()Distribution analysis:
# Violin plot with split comparison
fig, ax = plt.subplots(figsize=(4, 3))
sns.violinplot(data=df, x='timepoint', y='expression',
hue='treatment', split=True, inner='quartile', ax=ax)
ax.set_ylabel('Gene Expression (AU)')
sns.despine()Correlation matrices:
# Heatmap with proper colormap and annotations
fig, ax = plt.subplots(figsize=(5, 4))
corr = df.corr()
mask = np.triu(np.ones_like(corr, dtype=bool)) # Show only lower triangle
sns.heatmap(corr, mask=mask, annot=True, fmt='.2f',
cmap='RdBu_r', center=0, square=True,
linewidths=1, cbar_kws={'shrink': 0.8}, ax=ax)
plt.tight_layout()Time series with confidence bands:
# Line plot with automatic CI calculation
fig, ax = plt.subplots(figsize=(5, 3))
sns.lineplot(data=timeseries, x='time', y='measurement',
hue='treatment', style='replicate',
errorbar=('ci', 95), markers=True, dashes=False, ax=ax)
ax.set_xlabel('Time (hours)')
ax.set_ylabel('Measurement (AU)')
sns.despine()Using FacetGrid for automatic faceting:
# Create faceted plot
g = sns.relplot(data=df, x='dose', y='response',
hue='treatment', col='cell_line', row='timepoint',
kind='line', height=2.5, aspect=1.2,
errorbar=('ci', 95), markers=True)
g.set_axis_labels('Dose (μM)', 'Response (AU)')
g.set_titles('{row_name} | {col_name}')
sns.despine()
# Save with correct DPI
from figure_export import save_publication_figure
save_publication_figure(g.figure, 'figure_facets',
formats=['pdf', 'png'], dpi=300)Combining seaborn with matplotlib subplots:
# Create custom multi-panel layout
fig, axes = plt.subplots(2, 2, figsize=(7, 6))
# Panel A: Scatter with regression
sns.regplot(data=df, x='predictor', y='response', ax=axes[0, 0])
axes[0, 0].text(-0.15, 1.05, 'A', transform=axes[0, 0].transAxes,
fontsize=10, fontweight='bold')
# Panel B: Distribution comparison
sns.violinplot(data=df, x='group', y='value', ax=axes[0, 1])
axes[0, 1].text(-0.15, 1.05, 'B', transform=axes[0, 1].transAxes,
fontsize=10, fontweight='bold')
# Panel C: Heatmap
sns.heatmap(correlation_data, cmap='viridis', ax=axes[1, 0])
axes[1, 0].text(-0.15, 1.05, 'C', transform=axes[1, 0].transAxes,
fontsize=10, fontweight='bold')
# Panel D: Time series
sns.lineplot(data=timeseries, x='time', y='signal',
hue='condition', ax=axes[1, 1])
axes[1, 1].text(-0.15, 1.05, 'D', transform=axes[1, 1].transAxes,
fontsize=10, fontweight='bold')
plt.tight_layout()
sns.despine()Seaborn includes several colorblind-safe palettes:
# Use built-in colorblind palette (recommended)
sns.set_palette('colorblind')
# Or specify custom colorblind-safe colors (Okabe-Ito)
okabe_ito = ['#E69F00', '#56B4E9', '#009E73', '#F0E442',
'#0072B2', '#D55E00', '#CC79A7', '#000000']
sns.set_palette(okabe_ito)
# For heatmaps and continuous data
sns.heatmap(data, cmap='viridis') # Perceptually uniform
sns.heatmap(corr, cmap='RdBu_r', center=0) # Diverging, centeredAxes-level functions (e.g., scatterplot, boxplot, heatmap):
ax= parameter for precise placementfig, ax = plt.subplots(figsize=(3.5, 2.5))
sns.scatterplot(data=df, x='x', y='y', hue='group', ax=ax)Figure-level functions (e.g., relplot, catplot, displot):
height and aspect for sizingg = sns.relplot(data=df, x='x', y='y', col='category', kind='scatter')Seaborn automatically computes and displays uncertainty:
# Line plot: shows mean ± 95% CI by default
sns.lineplot(data=df, x='time', y='value', hue='treatment',
errorbar=('ci', 95)) # Can change to 'sd', 'se', etc.
# Bar plot: shows mean with bootstrapped CI
sns.barplot(data=df, x='treatment', y='response',
errorbar=('ci', 95), capsize=0.1)
# Always specify error type in figure caption:
# "Error bars represent 95% confidence intervals"Always set publication theme first:
sns.set_theme(style='ticks', context='paper', font_scale=1.1)Use colorblind-safe palettes:
sns.set_palette('colorblind')Remove unnecessary elements:
sns.despine() # Remove top and right spinesControl figure size appropriately:
# Axes-level: use matplotlib figsize
fig, ax = plt.subplots(figsize=(3.5, 2.5))
# Figure-level: use height and aspect
g = sns.relplot(..., height=3, aspect=1.2)Show individual data points when possible:
sns.boxplot(...) # Summary statistics
sns.stripplot(..., alpha=0.3) # Individual pointsInclude proper labels with units:
ax.set_xlabel('Time (hours)')
ax.set_ylabel('Expression (AU)')Export at correct resolution:
from figure_export import save_publication_figure
save_publication_figure(fig, 'figure_name',
formats=['pdf', 'png'], dpi=300)Pairwise relationships for exploratory analysis:
# Quick overview of all relationships
g = sns.pairplot(data=df, hue='condition',
vars=['gene1', 'gene2', 'gene3'],
corner=True, diag_kind='kde', height=2)Hierarchical clustering heatmap:
# Cluster samples and features
g = sns.clustermap(expression_data, method='ward',
metric='euclidean', z_score=0,
cmap='RdBu_r', center=0,
figsize=(10, 8),
row_colors=condition_colors,
cbar_kws={'label': 'Z-score'})Joint distributions with marginals:
# Bivariate distribution with context
g = sns.jointplot(data=df, x='gene1', y='gene2',
hue='treatment', kind='scatter',
height=6, ratio=4, marginal_kws={'kde': True})Issue: Legend outside plot area
g = sns.relplot(...)
g._legend.set_bbox_to_anchor((0.9, 0.5))Issue: Overlapping labels
plt.xticks(rotation=45, ha='right')
plt.tight_layout()Issue: Text too small at final size
sns.set_context('paper', font_scale=1.2) # Increase if neededFor more detailed seaborn information, see:
scientific-packages/seaborn/SKILL.md - Comprehensive seaborn documentationscientific-packages/seaborn/references/examples.md - Practical use casesscientific-packages/seaborn/references/function_reference.md - Complete API referencescientific-packages/seaborn/references/objects_interface.md - Modern declarative APIfig.update_layout(
font=dict(family='Arial, sans-serif', size=10),
plot_bgcolor='white',
# ... see matplotlib_examples.md Example 8
)
fig.write_image('figure.png', scale=3) # scale=3 gives ~300 DPILoad these as needed for detailed information:
publication_guidelines.md: Comprehensive best practices
color_palettes.md: Color usage guide
journal_requirements.md: Journal-specific specifications
matplotlib_examples.md: Practical code examples
Use these helper scripts for automation:
figure_export.py: Export utilities
save_publication_figure(): Save in multiple formats with correct DPIsave_for_journal(): Use journal-specific requirements automaticallycheck_figure_size(): Verify dimensions meet journal specspython scripts/figure_export.py for examplesstyle_presets.py: Pre-configured styles
apply_publication_style(): Apply preset styles (default, nature, science, cell)set_color_palette(): Quick palette switchingconfigure_for_journal(): One-command journal configurationpython scripts/style_presets.py to see examplesUse these files in figures:
color_palettes.py: Importable color definitions
apply_palette() helper functionMatplotlib style files: Use with plt.style.use()
publication.mplstyle: General publication qualitynature.mplstyle: Nature journal specificationspresentation.mplstyle: Larger fonts for posters/slidesRecommended workflow for creating publication figures:
from style_presets import configure_for_journal
configure_for_journal('nature', 'single')from figure_export import check_figure_size
check_figure_size(fig, journal='nature')from figure_export import save_for_journal
save_for_journal(fig, 'figure1', 'nature', 'combination')Before submitting figures, verify:
Use this skill to ensure scientific figures meet the highest publication standards while remaining accessible to all readers.
© mims-harvard, 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 10 other files (scripts, references, assets) in .agents/skills/scientific-visualization of mims-harvard/OptimusKG.
Open the folder on GitHubat commit 4fb3529
We found 23 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 19 other GitHub owners. This page covers the copy in mims-harvard/OptimusKG, which our catalogue first saw on October 7, 2026.
Scientific Visualization 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 |
|---|---|---|---|---|---|---|
| Scientific Visualization this skillmims-harvard/OptimusKG | 146 | 19 repos | ~6.3k | Automated safety check: Pass | MIT | |
| MatplotlibzLanqing/codex-claude-academic-skills | 4.6k | 17 repos | ~2.9k | Automated safety check: Pass | MIT | |
| SeabornzLanqing/codex-claude-academic-skills | 4.6k | 16 repos | ~4.9k | Automated safety check: Pass | BSD-3-Clause | |
| 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 |
zLanqing/codex-claude-academic-skills
Low-level plotting library for full customization. An agent skill from zLanqing/codex-claude-academic-skills.
zLanqing/codex-claude-academic-skills
Statistical visualization with pandas integration. An agent skill from zLanqing/codex-claude-academic-skills.
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.
mims-harvard/OptimusKG
Create distinctive, production-grade frontend interfaces with high design quality.
mims-harvard/OptimusKG
Enforce synchronization between Kedro node files and catalog YAML files in the OptimusKG project.
mims-harvard/OptimusKG
Guide for using OptimusKG, the biomedical knowledge graph, through the optimuskg Python client.
Works with
Categories
Create publication figures with matplotlib/seaborn/plotly. An agent skill from mims-harvard/OptimusKG. Scientific Visualization is an agent skill from mims-harvard/OptimusKG. Create publication figures with matplotlib/seaborn/plotly.
Scientific Visualization fits situations like: tasks that involve Data visualization.
Run `npx skills add mims-harvard/OptimusKG --skill scientific-visualization -a claude-code`. Or copy the skill folder (.agents/skills/scientific-visualization in mims-harvard/OptimusKG) into .claude/skills/scientific-visualization in your project. Claude Code loads it when a task matches its description.
Run `npx skills add mims-harvard/OptimusKG --skill scientific-visualization -a codex`. Or copy the skill folder (.agents/skills/scientific-visualization in mims-harvard/OptimusKG) into .agents/skills/scientific-visualization 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 mims-harvard/OptimusKG --skill scientific-visualization -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/scientific-visualization, .gemini/skills/scientific-visualization, .github/skills/scientific-visualization and .opencode/skills/scientific-visualization in your project.
Going by SKILL.md and its folder, Scientific Visualization needs Python for the scripts in its folder and the command-line tools its instructions call (python). Our summary lists: Python 3.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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.
Scientific Visualization is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 6.3k tokens (SKILL.md is roughly 25k 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 Scientific Visualization: Matplotlib (zLanqing/codex-claude-academic-skills, 4.6k stars), Seaborn (zLanqing/codex-claude-academic-skills, 4.6k stars), CJK Font Setup for Plots (xjtulyc/MedgeClaw, 617 stars) and Tufte Data Viz (caylent/tufte-data-viz, 222 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
mims-harvard (a GitHub organization) maintains it in mims-harvard/OptimusKG, which has 146 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on September 21, 2026.
Source: mims-harvard/OptimusKG on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.