Skip to content
Development
Skill

/lancet-figure-guide

The Lancet figure preparation: resolution (300+ DPI at 120%), preferred editable formats (PowerPoint/Word/SVG), column widths (75/154 mm), Times New Roman, in-house redraw policy.

From plugin
sciagent-skills
384200 skills

Claude Code

$ npx -y skills add jaechang-hits/SciAgent-Skills --skill lancet-figure-guide --agent claude-code

SKILL.md

lancet-figure-guide.SKILL.md
name: lancet-figure-guide
description: "The Lancet figure preparation: resolution (300+ DPI at 120%), preferred editable formats (PowerPoint/Word/SVG), column widths (75/154 mm), Times New Roman, in-house redraw policy."
license: CC-BY-4.0
compatibility: Python 3.10+, Pillow, Matplotlib
metadata:
  authors: HITS
  version: "1.0"

The Lancet Figure Preparation Guide

Overview

This guide provides the complete specifications for preparing figures for submission to **The Lancet** and Lancet family journals. A key distinguishing feature of The Lancet is that **most figures are redrawn by in-house illustrators** into Lancet house style. Therefore, editable source formats (PowerPoint, Word, SVG) are strongly preferred over rasterized images.

**Official reference**: https://www.thelancet.com/submission-guidelines

---

Resolution Requirements

| Requirement | Specification | |---|---| | All photographic images | **300 DPI minimum** | | Submission size | **120%** of intended publication size |

**TIP**: Supply images 20% larger than publication size to ensure quality is maintained after any resizing by the production team.

from PIL import Image

def check_lancet_resolution(image_path):
    """Check if image meets Lancet resolution requirements."""
    img = Image.open(image_path)
    dpi = img.info.get('dpi', (72, 72))

    print(f"DPI: {dpi[0]} x {dpi[1]}")
    print(f"Minimum required: 300 DPI")
    print(f"TIP: Submit at 120% of publication size")

    if dpi[0] >= 300:
        print("PASS: Resolution meets Lancet requirements")
    else:
        print("FAIL: Need at least 300 DPI")

    return dpi[0] >= 300

---

File Format

Preferred Formats (Editable)

| Format | Notes | |---|---| | **PowerPoint (.pptx)** | Most preferred — easy for in-house redraw | | **Word (.docx)** | Accepted for simple figures | | **SVG** | Scalable vector graphics |

Also Accepted

| Format | Notes | |---|---| | TIFF | For photographic images | | JPEG | Acceptable quality | | EPS | Vector format | | PDF | General purpose |

Why Editable Formats?

The Lancet's in-house illustration team **redraws most submitted figures** into the Lancet house style. Providing editable source files (especially PowerPoint) makes this process smoother and more accurate.

---

Figure Size and Dimensions

| Layout | Width | |---|---| | 1 column | **75 mm** (2.95 in) | | 2 columns | **154 mm** (6.06 in) | | Minimum width | **107 mm** (4.21 in) |

  • All panels must fit on a **single page**
import matplotlib.pyplot as plt

LANCET_WIDTHS = {
    'single':  75 / 25.4,    # 2.95 inches
    'minimum': 107 / 25.4,   # 4.21 inches
    'double':  154 / 25.4,   # 6.06 inches
}

def create_lancet_figure(layout='single', aspect_ratio=0.75):
    """Create a Matplotlib figure sized for The Lancet."""
    width = LANCET_WIDTHS[layout]
    height = width * aspect_ratio

    fig, ax = plt.subplots(figsize=(width, height))
    fig.set_dpi(300)
    return fig, ax

---

Color Mode

| Purpose | Color Mode | |---|---| | Online publication | **RGB** | | Print publication | **CMYK** |

  • Color and black-and-white photographs both accepted

---

Font Requirements

| Element | Font | Size | Style | |---|---|---|---| | Main figure heading | Times New Roman | **10 pt** | **Bold** | | Figure legend | Times New Roman | 10 pt | Regular, single-spaced |

Key Difference from Other Journals

  • The Lancet uses **Times New Roman** (serif font), unlike most other biomedical journals that prefer sans-serif fonts
import matplotlib.pyplot as plt

def set_lancet_fonts():
    """Configure Matplotlib for Lancet figure fonts."""
    plt.rcParams.update({
        'font.family': 'serif',
        'font.serif': ['Times New Roman', 'Times'],
        'font.size': 10,
        'axes.labelsize': 10,
        'axes.titlesize': 10,
        'axes.titleweight': 'bold',
        'xtick.labelsize': 8,
        'ytick.labelsize': 8,
        'legend.fontsize': 8,
    })

---

Labeling Conventions

Rules

  • **No box outlines** around graphs
  • **No titles** inside graphs or artwork — include in caption instead
  • Number figures in order of citation in text

Best Practices

  • Keep figures as simple and clear as possible
  • The Lancet illustrators will redraw most figures, so focus on conveying data accurately rather than visual polish

---

Image Integrity and Manipulation Policy

  • Follow standard biomedical publishing ethics
  • All image adjustments should be applied uniformly
  • Describe any image processing in Methods
  • Maintain original data for potential review

---

Python Quick Start: Full Validation

from PIL import Image
import os

def validate_lancet_figure(image_path, layout='single'):
    """Full validation of a figure against Lancet requirements."""
    img = Image.open(image_path)
    issues = []

    # 1. Resolution check (300 DPI at 120% size)
    dpi = img.info.get('dpi', (72, 72))
    if dpi[0] < 300:
        issues.append(f"Resolution {dpi[0]} DPI below 300 DPI minimum")

    # 2. Dimension check
    widths_mm = {'single': 75, 'minimum': 107, 'double': 154}
    if layout in widths_mm and dpi[0] > 0:
        actual_w_mm = (img.size[0] / dpi[0]) * 25.4
        target = widths_mm[layout]
        # Should be 120% of publication size
        target_120 = target * 1.2
        print(f"Width: {actual_w_mm:.1f} mm (target at 120%: {target_120:.1f} mm)")

    # 3. Format recommendation
    fmt = img.format
    if fmt and fmt.upper() in ('TIFF', 'JPEG', 'PNG'):
        print(f"NOTE: Format is {fmt}. Lancet prefers PowerPoint/Word/SVG for redrawing")

    # Report
    print(f"=== Lancet Figure Validation ===")
    print(f"Dimensions: {img.size[0]} x {img.size[1]} px")
    print(f"DPI: {dpi[0]} x {dpi[1]}")
    print(f"Color mode: {img.mode}")

    if issues:
        print(f"\nISSUES FOUND ({len(issues)}):")
        for issue in issues:
            print(f"  - {issue}")
    else:
        pri
Read more
@jaechang-hits
Ships withsciagent-skills

Turn your AI coding agent into a life sciences expert — 199 bioinformatics skills for Claude Code covering RNA-seq, single-cell analysis, genomics, proteomics, drug discovery, and more. Boosted BixBench from 65% to 92%. Open source.

Stars on GitHub

Momentum

stars in total
384
Star history of jaechang-hits/SciAgent-Skills on GitHub, a chart by star-history.com

Other skills on sciagent-skills.

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills11d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc12d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react2d252k
@facebook@facebookInstall Skill

Questions about lancet-figure-guide.

Which coding agents can use lancet-figure-guide?
lancet-figure-guide installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.