Skip to content
Development
Skill

/cell-figure-guide

Cell (Cell Press) figure preparation: resolution (300-1000 DPI), formats (TIFF/PDF), RGB color, Avenir/Arial fonts, uppercase panel labels, strict image manipulation policies.

From plugin
sciagent-skills
384200 skills

Claude Code

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

SKILL.md

cell-figure-guide.SKILL.md
name: cell-figure-guide
description: "Cell (Cell Press) figure preparation: resolution (300-1000 DPI), formats (TIFF/PDF), RGB color, Avenir/Arial fonts, uppercase panel labels, strict image manipulation policies."
license: CC-BY-4.0
compatibility: Python 3.10+, Pillow, Matplotlib
metadata:
  authors: HITS
  version: "1.0"

Cell Figure Preparation Guide

Overview

This guide provides the complete specifications for preparing figures for submission to **Cell** and other Cell Press journals (e.g., Cell Stem Cell, Cell Reports, Molecular Cell). Cell Press has strict figure requirements and a rigorous image integrity policy.

**Official reference**: https://www.cell.com/information-for-authors/figure-guidelines

---

Resolution Requirements

| Image Type | Minimum Resolution | Notes | |---|---|---| | Color / Grayscale photographs | **300 DPI** | At desired print size | | Black-and-white images | **500 DPI** | At desired print size | | Line art (graphs, diagrams) | **1,000 DPI** | At desired print size |

**IMPORTANT**: All resolution measurements are at the **desired print size**, not at full-page size.

Verify Resolution

from PIL import Image

def check_cell_resolution(image_path, image_type='color'):
    """Check if image meets Cell journal resolution requirements.

    Args:
        image_path: Path to the image file
        image_type: 'color' (300 DPI), 'bw' (500 DPI), or 'lineart' (1000 DPI)
    """
    min_dpi = {'color': 300, 'bw': 500, 'lineart': 1000}
    required = min_dpi.get(image_type, 300)

    img = Image.open(image_path)
    dpi = img.info.get('dpi', (72, 72))

    print(f"Image type: {image_type}")
    print(f"Required DPI: {required}")
    print(f"Actual DPI: {dpi[0]} x {dpi[1]}")

    if dpi[0] >= required:
        print("PASS: Resolution meets Cell requirements")
    else:
        print(f"FAIL: Need at least {required} DPI, got {dpi[0]}")

    return dpi[0] >= required

---

File Format

Preferred Formats

| Format | Best For | Notes | |---|---|---| | **TIFF** | Bitmap, grayscale, color images | Use LZW compression to reduce size | | **PDF** | Any figure type | Universally accepted | | **EPS** | Vector images (graphs, diagrams) | Preserves scalability |

Also Accepted

  • JPEG, CDX files

File Size

  • Individual files: **20 MB maximum**

Submission Notes

  • Initial submission: Figures can be embedded in manuscript or uploaded separately
  • Final production: Separate high-resolution files required

---

Figure Size and Dimensions

2-Column Format Journals (Cell, Molecular Cell, etc.)

| Layout | Width | |---|---| | 1 column | **85 mm** (3.35 in) | | 1.5 columns | **114 mm** (4.49 in) | | Full width | **174 mm** (6.85 in) |

3-Column Format Journals

| Layout | Width | |---|---| | 1 column | **55 mm** (2.17 in) | | 2 columns | **114 mm** (4.49 in) | | Full width | **174 mm** (6.85 in) |

Other Cell Press Journals (Chem, Joule, Matter, etc.)

| Layout | Width | |---|---| | 1 column | **112 mm** (4.41 in) | | Full width | **172 mm** (6.77 in) |

**All figures** must fit on a single 8.5" x 11" page.

Python: Set Cell Figure Dimensions

import matplotlib.pyplot as plt

# Cell Press figure widths in inches
CELL_WIDTHS = {
    '2col_single':   85 / 25.4,   # 3.35 in
    '2col_1.5':      114 / 25.4,  # 4.49 in
    '2col_full':     174 / 25.4,  # 6.85 in
    '3col_single':   55 / 25.4,   # 2.17 in
    '3col_double':   114 / 25.4,  # 4.49 in
    '3col_full':     174 / 25.4,  # 6.85 in
}

def create_cell_figure(layout='2col_single', aspect_ratio=0.75):
    """Create a Matplotlib figure sized for Cell Press journals."""
    width = CELL_WIDTHS[layout]
    height = width * aspect_ratio

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

    return fig, ax

---

Color Mode

  • **Submit in RGB** color space
  • Journal converts to CMYK for print production
  • RGB preserves brighter colors for online viewing
from PIL import Image

def convert_to_rgb_for_cell(image_path, output_path):
    """Convert image to RGB for Cell Press submission."""
    img = Image.open(image_path)
    if img.mode == 'CMYK':
        img = img.convert('RGB')
        print("Converted from CMYK to RGB")
    elif img.mode != 'RGB':
        img = img.convert('RGB')
        print(f"Converted from {img.mode} to RGB")
    img.save(output_path)
    return output_path

---

Font Requirements

| Element | Font | Size | |---|---|---| | Primary font | **Avenir** (preferred), Arial, Helvetica | — | | Figure text | — | ~**7 pt** at print size | | Panel labels | — | Bold, **capital letters** |

Critical Rules

  • **All fonts must be embedded** in Adobe Illustrator files
  • Use Avenir as the first choice; Arial or Helvetica as alternatives
  • Consistent font usage across all figure panels
import matplotlib.pyplot as plt

def set_cell_fonts():
    """Configure Matplotlib for Cell Press figure fonts."""
    plt.rcParams.update({
        'font.family': 'sans-serif',
        'font.sans-serif': ['Avenir', 'Arial', 'Helvetica'],
        'font.size': 7,
        'axes.labelsize': 7,
        'axes.titlesize': 7,
        'xtick.labelsize': 6,
        'ytick.labelsize': 6,
        'legend.fontsize': 6,
    })

---

Labeling Conventions

Panel Labels

  • **Capital letters**: A, B, C, D, ...
  • Bold weight
  • Position: top-left corner of each panel

Titles

  • **Do NOT place titles inside figures** — include them in the figure caption instead
  • Remove any labels not essential for understanding the figure; explain in caption
import matplotlib.pyplot as plt
import string

def add_cell_panel_labels(fig, axes):
    """Add Cell-style uppercase bold panel labels."""
    if not hasattr(axes, '__iter__'):
        axes = [axes]

    for i, ax in enumerate(axes):
        label = string.ascii_uppercase[i]
        ax.text(-0.1, 1.1, label,
                transform=ax.transAxes,
                fontsize=
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.

skills10d309k
@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…

react1d252k
@facebook@facebookInstall Skill

Questions about cell-figure-guide.

Which coding agents can use cell-figure-guide?
cell-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.