From sciagent-skills
Provides universal QA checklist for scientific plots: overlapping labels, clipped text, missing axes/legends, overcrowded data; cross-journal resolution/format/color guidance. Useful post-plot generation.
npx claudepluginhub jaechang-hits/sciagent-skills --plugin sciagent-skillsThis skill uses the workspace's default tool permissions.
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.
Critiques academic figures for format, colorblind safety, legibility, overplotting, category count, resolution, and vector/raster suitability before paper submission.
Guides chart type selection by data structure, color palettes for accessibility/print, figure composition, and journal formatting for scientific publications. Use when preparing data visualizations for talks or submissions.
Creates publication-ready scientific figures with matplotlib/seaborn/plotly, including multi-panel layouts, error bars, significance annotations, colorblind-safe palettes, and journal formatting for Nature, Science, Cell.
Share bugs, ideas, or general feedback.
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.
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.
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.
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.
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.
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
| Issue | How to Detect | Fix |
|---|---|---|
| Overlapping labels | Text visually collides on axes or legend | Rotate labels, reduce font size, or increase figure dimensions |
| Clipped text | Labels or titles cut off at figure edge | Increase margins with tight_layout() or constrained_layout |
| Missing axes or legends | No axis labels, units, or legend present | Add xlabel, ylabel, legend() calls |
| Empty plot area | Blank canvas with axes but no visible data | Check data filtering, column names, and plot function arguments |
| Overcrowded data | Points merge into solid mass | Reduce marker size, add transparency (alpha), or use density plots |
tight_layout() or constrained_layout=True: These prevent text clipping at figure boundaries, the most common layout failure in matplotlibfig.set_dpi(300) or plt.savefig(..., dpi=300) to ensure publication-quality output from the startalpha=0.3-0.5 when plotting thousands of points to reveal density structure instead of a solid massfig.tight_layout() or create figures with constrained_layout=Trueax.legend() when plotting more than one series; verify legend entries match the dataalpha transparency, hexbin plots, or kernel density estimation for large datasetsdpi=300 (minimum) in savefig() or set it on the figure object at creationnature-figure-guide -- Nature-specific figure requirementscell-figure-guide -- Cell Press figure requirementsscience-figure-guide -- Science (AAAS) figure requirementspnas-figure-guide -- PNAS figure requirements