本文へ移動
cccskills
無料GitHub で公開

general-figure-guide

Universal QA checklist for generated scientific plots: overlapping labels, clipped text, missing axes/legends, overcrowded data, and cross-journal resolution/format guidance.

インストール方法を見る

含まれるファイル(1)

  • SKILL.md7.1 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

General Scientific Figure Quality Guide

Overview

This guide provides a universal quality checklist for evaluating scientific figures, whether generated programmatically (matplotlib, seaborn, R/ggplot2) or assembled manually. It focuses on visual readability issues that are common across all journals and easily missed during automated plot generation.

Key Concepts

Visual Readability

A figure must communicate its data without requiring the reader to guess. The most common readability failures are overlapping labels, clipped text that runs outside the figure boundary, missing or unlabeled axes, absent legends, empty plot areas from incorrect data filtering, and overcrowded data points that merge into an unreadable mass.

Resolution and Output Format

Scientific figures generally require 300+ DPI for raster output (TIFF, PNG, JPEG) and vector formats (PDF, EPS, SVG) for line art and graphs. Vector formats are preferred for plots because they scale without quality loss. Raster formats are appropriate for photographs and micrographs.

Color Accessibility

Approximately 8% of males have some form of color vision deficiency. Figures that rely solely on red-green color differences exclude these readers. Use colorblind-friendly palettes (blue-orange, or viridis/cividis colormaps), add pattern or shape differentiation, and test figures with a colorblindness simulator before submission.

Uniform Image Adjustments

All major journals require that brightness, contrast, and color adjustments be applied uniformly to the entire image. Selective enhancement of specific regions (e.g., adjusting one gel lane) is considered data manipulation and grounds for rejection across all journals. Always document processing steps in the Methods section and retain original unprocessed files.

Decision Framework

Is the figure a generated plot or a photograph?
├── Generated plot (matplotlib, ggplot2, seaborn)
│   ├── Export as vector (PDF, SVG, EPS) → preferred
│   └── Export as raster → 300+ DPI minimum, PNG or TIFF
├── Photograph or micrograph
│   └── Export as raster → 300+ DPI, TIFF preferred
└── Multi-panel composite
    ├── Assemble panels first, then export as single file
    └── Use consistent font sizes and label styles across panels
IssueHow to DetectFix
Overlapping labelsText visually collides on axes or legendRotate labels, reduce font size, or increase figure dimensions
Clipped textLabels or titles cut off at figure edgeIncrease margins with tight_layout() or constrained_layout
Missing axes or legendsNo axis labels, units, or legend presentAdd xlabel, ylabel, legend() calls
Empty plot areaBlank canvas with axes but no visible dataCheck data filtering, column names, and plot function arguments
Overcrowded dataPoints merge into solid massReduce marker size, add transparency (alpha), or use density plots

Best Practices

  1. Run a visual check after every plot generation: Inspect the rendered image for overlapping labels, clipped text, missing axes/legends, empty areas, and overcrowded data before proceeding
  2. Use tight_layout() or constrained_layout=True: These prevent text clipping at figure boundaries, the most common layout failure in matplotlib
  3. Set DPI at figure creation time: Configure fig.set_dpi(300) or plt.savefig(..., dpi=300) to ensure publication-quality output from the start
  4. Export plots as vector formats: Use PDF, SVG, or EPS for graphs and diagrams. Reserve raster formats (PNG, TIFF) for photographs and micrographs
  5. Apply consistent font sizes across panels: All text in a multi-panel figure should use the same font family and comparable sizes (typically 6-8 pt for labels, 8 pt for panel identifiers)
  6. Add transparency for dense scatter plots: Use alpha=0.3-0.5 when plotting thousands of points to reveal density structure instead of a solid mass
  7. Include units on all axes: Every axis should show the measured parameter and units in parentheses (e.g., "Time (hours)", "Concentration (nM)")

Common Pitfalls

  1. Not inspecting generated plots before saving: Automated pipelines often produce figures with layout issues that go unnoticed until review
    • How to avoid: Always render and visually inspect each figure; if reviewing programmatically, check for text bounding-box overlaps
  2. Clipped axis labels or titles: Default matplotlib margins often cut off long labels or suptitles
    • How to avoid: Call fig.tight_layout() or create figures with constrained_layout=True
  3. Missing legends on multi-series plots: Plots with multiple lines or groups are unreadable without a legend
    • How to avoid: Always call ax.legend() when plotting more than one series; verify legend entries match the data
  4. Overcrowded scatter plots at large N: Scatter plots with >10,000 points become solid blobs at default settings
    • How to avoid: Use alpha transparency, hexbin plots, or kernel density estimation for large datasets
  5. Saving at screen resolution (72 DPI): Default screen DPI produces figures that are unprintable in journals
    • How to avoid: Always specify dpi=300 (minimum) in savefig() or set it on the figure object at creation

Protocol Guidelines

  1. Set up figure dimensions and DPI: Before plotting, configure target width (journal column width), aspect ratio, and DPI (300+ minimum) on the figure object
  2. Generate the figure using your plotting library with the pre-configured settings
  3. Visually inspect the rendered output for these specific issues:
    • Overlapping labels or annotations
    • Clipped text at figure boundaries
    • Missing axis labels, units, or legends
    • Empty plot areas (data not rendered)
    • Overcrowded or indistinguishable data points
  4. If any issue is found, regenerate with targeted fixes (adjust layout, font size, margins, alpha, or figure dimensions)
  5. Export in the correct format: vector (PDF/EPS/SVG) for plots, raster (TIFF/PNG at 300+ DPI) for photographs
  6. Verify the saved file: reopen the exported file to confirm it matches the on-screen rendering

Further Reading

Related Skills

  • nature-figure-guide -- Nature-specific figure requirements
  • cell-figure-guide -- Cell Press figure requirements
  • science-figure-guide -- Science (AAAS) figure requirements
  • pnas-figure-guide -- PNAS figure requirements

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

API + Python SDK for ordering cell-free protein expression and binding assays. Submit sequences for expression (10–100 µg), measure binding affinity (KD) against targets, track status, and retrieve results programmatically — no wet-lab setup. Built for ML-guided directed evolution and antibody/nanobody optimization. Requires Adaptyv account and API key.

日本語の概要は準備中です。原文の説明を表示しています。

jaechang-hits/SciAgent-Skills3762026年9月29日 更新

aeon

無料

scikit-learn compatible Python toolkit for time series ML: classify, cluster, regress, segment, transform with 30+ algorithms (ROCKET, InceptionTime, KNN-DTW, HIVE-COTE, WEASEL). Handles panel, multivariate, and unequal-length series. Maintained successor to sktime. Alternatives: sktime (larger ecosystem), tslearn (fewer algorithms), catch22 (features only).

日本語の概要は準備中です。原文の説明を表示しています。

jaechang-hits/SciAgent-Skills3762026年9月29日 更新

AiZynthFinder retrosynthetic route planning (CASP) from AstraZeneca Molecular AI. Monte Carlo tree search guided by a template-based neural expansion policy recursively disconnects a target SMILES until precursors are found in a purchasable stock. Covers config.yml (v4 format), aizynthcli batch screening, the AiZynthFinder/AiZynthExpander Python API, one-step disconnections, custom stocks via smiles2stock, scorers, Retro*/breadth-first/DFPN search alternatives, and reading output.json.gz / trees.json. Use for synthesis route planning, synthesizability screening, and building-block/precursor search. For reaction barriers use neb-irc-activation-energy; for 2D reaction scheme drawing use rdkit-chemdraw-cdxml.

日本語の概要は準備中です。原文の説明を表示しています。

jaechang-hits/SciAgent-Skills3762026年9月29日 更新

Access AlphaFold DB's 200M+ predicted structures by UniProt ID. Download PDB/mmCIF, analyze pLDDT/PAE, bulk-fetch proteomes via Google Cloud. For experimental structures use PDB; for prediction use ColabFold or ESMFold.

日本語の概要は準備中です。原文の説明を表示しています。

jaechang-hits/SciAgent-Skills3762026年9月29日 更新

Annotated matrices for single-cell genomics. Stores X with obs/var metadata, layers, embeddings (obsm/varm), graphs (obsp/varp), uns. Use for .h5ad/.zarr I/O, concatenation, scverse integration. For analysis use scanpy; for probabilistic models use scvi-tools.

日本語の概要は準備中です。原文の説明を表示しています。

jaechang-hits/SciAgent-Skills3762026年9月29日 更新

GRN inference from expression via GRNBoost2 (gradient boosting) or GENIE3 (Random Forest). Load matrix, filter by TFs, infer TF-target-importance links, save network. Dask-parallelized to single-cell scale. Core SCENIC component.

日本語の概要は準備中です。原文の説明を表示しています。

jaechang-hits/SciAgent-Skills3762026年9月29日 更新

jaechang-hits のスキルをすべて見る

このスキルの問題を報告する