Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Publication Figures

ASecurity

Designing publication-quality scientific figures — layout, typography, data-ink, and journal-ready export.

2 stars
0 votes
0 copies
0 views
Added 9/29/2026
ai-agentspythongoaws

Works with

cli

Security Analysis

A100/100

Scanned 9/29/2026

$npx -y skills add aicodedecode/awesome-muse-skills --skill publication-figures --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Publication Figures?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Publication Figures
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/aicodedecode-publication-figures/badge)](https://www.skillsdirectory.com/skills/aicodedecode-publication-figures)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: publication-figures
description: Designing publication-quality scientific figures — layout, typography, data-ink, and journal-ready export.
category: scientific
---

## Overview

A figure is an argument, not decoration: it should make one point
instantly and survive scrutiny. This skill covers figure design for
papers — choosing the right plot type, layout for single/double-column
formats, typography and labeling, honest axis handling, and exporting
vector graphics that meet journal requirements.

## When to use

- Designing figures for a paper, thesis, or report
- Choosing between plot types for a dataset (and knowing when a table wins)
- Fixing common figure flaws: clutter, tiny fonts, misleading axes
- Preparing multi-panel figures with consistent style
- Exporting print-ready vector files (PDF/EPS/SVG) at the right size

## Core concepts

- **Data-ink ratio (Tufte):** maximize ink devoted to data, minimize chartjunk — gridlines, 3D effects, and heavy borders are guilty until proven useful.
- **One figure, one message:** each figure makes a single claim, stated in its caption; if you need two sentences to explain what a panel shows, split it.
- **Preattentive attributes:** position, length, and color pop out instantly; angle, area, and volume don't — encode the important variable in position/length.
- **Honest axes:** truncated y-axes exaggerate differences — sometimes justified (with clear breaks/annotations), usually deceptive; log scales for multiplicative phenomena, labeled as such.
- **Typography:** one sans or serif family, ≥7–8 pt at final print size, consistent across panels; never let matplotlib defaults decide your fonts.
- **Color with purpose:** color encodes a variable or highlights the finding — decorative color is noise; ensure grayscale/print readability.

- **Small multiples:** the same plot type repeated across conditions — the most powerful comparative layout; shared axes make differences pop without any 3D or animation.
- **Aspect ratio and banking:** the perceived slope of a line depends on aspect ratio — bank to ~45° (Cleveland) so rates of change are judged accurately, not exaggerated or flattened.
- **Annotation layering:** direct labels, reference lines (theory predictions, thresholds), and shaded regions (excluded/interesting zones) turn a plot into an argument — annotate the conclusion onto the figure.

## Practical workflow

### 1. Plan before plotting

1. Write the one-sentence message of the figure first; choose the plot type that shows it most directly (comparison → bars/dots; trend → lines; distribution → violins/histograms/ECDFs; relationship → scatter).
2. Sketch the panel layout on paper: reading order left-to-right, top-to-bottom; shared axes where comparable.
3. Decide what's data, what's annotation, what's caption — move explanations to the caption, keep the figure clean.

### 2. Build with a style system

```python
import matplotlib.pyplot as plt
plt.rcParams.update({
    "figure.dpi": 150, "savefig.dpi": 300,
    "font.size": 9, "axes.linewidth": 0.8,
    "xtick.direction": "in", "ytick.direction": "in",
})
# Design at final size: single column ~3.5 in, double ~7 in
fig, axes = plt.subplots(1, 2, figsize=(7, 2.8), sharey=True)
```

1. Set figure size to the journal's column width — design at final size, not scaled down later.
2. Use a consistent style dictionary across all figures in the paper (fonts, line widths, palette, tick direction).
3. Label directly on the plot (legend near the data, annotations with arrows) rather than forcing readers to decode a legend.

### 3. Show uncertainty and data

1. Plot the raw data (or a faithful summary) alongside model fits — never the fit alone.
2. Show uncertainty: error bars, confidence bands, or posterior draws — with the interval type stated in the caption.
3. For small-n data, show every point (strip/swarm plots beat bar charts with error bars — "dynamite plots" hide distributions).

### 4. Export and check

1. Export vector (PDF/SVG) for line art; raster (PNG/TIFF ≥300 dpi) only for images/photos; embed fonts or convert to outlines.
2. Check at 100% print size: are all labels legible? Do colors survive grayscale conversion? Is anything clipped?
3. Verify against journal specs: file format, resolution, color mode (RGB vs CMYK), maximum file size.

### 5. Build a multi-panel figure

1. Lay out panels in reading order with a clear narrative: setup → key result → controls/validation → implication.
2. Share axes where quantities are comparable; label panels (a), (b), (c) and reference them in order in text and caption.
3. Enforce visual consistency: same variable = same color/marker in every panel; same scale where comparison matters — inconsistency forces readers to relearn each panel.

## Common pitfalls

- **Dynamite plots:** bar + error bar hides the distribution — show the data.
- **Dual y-axes:** two scales on one plot invite false comparisons — use two panels or normalize.
- **Truncated axes without warning:** exaggerates effects — if you must truncate, show the break explicitly and justify it.
- **Rainbow/jet colormaps:** perceptually non-uniform — see colormap-theory.
- **Tiny fonts:** 6 pt labels that were legible on a 13-inch screen vanish in a 3.5-inch column — design at final size.
- **Figure–caption divorce:** the figure should be interpretable with its caption alone; undefined abbreviations, missing units, and mystery symbols fail this test.
- **Inconsistent encoding across panels:** the same condition in different colors per panel — readers misattribute; fix with a single style dictionary.
- **Panels that don't earn their space:** supplementary-quality controls promoted to main figures dilute the message — main figures argue; supplements document.

Attribution

aicodedecodeaicodedecode
View sourceSee grades on GitHubMore from aicodedecode →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Terse caveman voice: answer first, fluff gone, every technical fact kept. Use for /caveman, "caveman mode", "talk like caveman", "be brief", "less tokens". Stays on until "stop caveman" or "normal mode".

1100021 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

698621 votes

Writing Skills

Create and manage Claude Code skills in HASH repository following Anthropic best practices. Use when creating new skills, modifying skill-rules.json, understanding trigger patterns, working with hooks, debugging skill activation, or implementing progressive disclosure. Covers skill structure, YAML frontmatter, trigger types (keywords, intent patterns), UserPromptSubmit hook, and the 500-line rule. Includes validation and debugging with SKILL_DEBUG. Examples include rust-error-stack, cargo-dep...

3931 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3421 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Amp, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Grok Build, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

741 votes
View all in ai-agents →