Publication-ready statistical figures for SSCI/SCI journals across psychology, economics, public health, sociology, political science, geography, methodology. Validated matplotlib styling, CVD-safe palettes (Tol, Okabe-Ito, ggsci, aesthetic sets), APA 7 formatting, 12 journal presets (APA, Elsevier, Wiley, SAGE, Psych Science, ASA, Nature, Science, NEJM, Lancet, BMJ, JAMA), 55+ chart types. Use when creating academic figures, path/SEM diagrams, heatmaps, forest plots, error-bar charts, mediation diagrams, event-study plots, RD plots, Kaplan-Meier curves, choropleths, causal DAGs, or any journal submission figure. Also use for publication-quality figures even without explicit "APA" or "SSCI" mention.
Keywords: academic figure, APA figure, SSCI chart, path model, forest plot, heatmap, Kaplan-Meier, event-study, RD plot, DID, coefficient plot, choropleth, causal DAG, multi-panel, journal submission figure, 学术统计图, 论文图表, APA格式, SSCI图表, 路径模型, 森林图, 热力图, 中介模型, 事件研究, 断点回归, 生存曲线, 多面板图, 心理学可视化, 经济学图表, 公共卫生图表, 期刊投稿
SSCI Academic Figure Style
1. Core Principles
Three design commitments guide every figure this Skill produces:
Data-ink ratio: Every pixel should convey data. Remove gridlines, 3D effects, and decorative elements -- they add visual noise without information value (Tufte, 1983). Use clean L-shaped axes (top and right spines off).
Colorblind-safe and grayscale-compatible: About 8% of male readers have red-green color vision deficiency. Categorical palettes default to validated CVD-safe sets (Tol, 2021; Wong, 2011; Okabe & Ito, 2008) and pair color with a redundant channel (line style, marker shape, or hatching) so every figure remains readable in grayscale print. Journal-anchored palettes (NPG, AAAS, NEJM, Lancet, BMJ, JAMA) are provided to match house style at submission and are flagged with their CVD grade in list_palettes().
Clean figure + separate text: The saved image contains only the data visualization (axes, data, legend). Figure number, title, and Note are output as standalone Markdown text for the user to place in the manuscript. This matches APA 7th Edition requirements and most journal submission guidelines where captions are supplied separately from image files.
Initialize the style system at the start of every figure:
apply_style(journal=...) also auto-loads the matching default palette via axes.prop_cycle (e.g. journal='nejm' activates the nejm palette). For slide / poster usage, add mode='slides' to bump font sizes without touching the underlying preset.
Step 3 -- Build the Figure
Open references/chart-type-guide.md first. It is the Index to the 55-chart catalog and routes you to one of the four chart-family files (chart-types-core.md, chart-types-models.md, chart-types-causal-econ.md, chart-types-applied.md) or the quick-reference file. Follow the design elements, parameters, and code patterns documented there.
Color selection:
Categorical data: get_palette(n) returns n CVD-safe hex colors (default: Tol Bright). Use category= / name= for discipline- or journal-anchored alternatives.
Emphasis focal + reference pair: get_emphasis_pair(focal=..., reference=...) returns two colors for "focal series vs neutral reference" patterns (treatment vs control, event-study, simple slopes).
Heatmap: get_diverging_cmap('BuRd') with TwoSlopeNorm(vcenter=0) for zero-centered diverging data.
Sequential data: get_sequential_cmap('viridis') (perceptually uniform); also cividis / plasma / inferno / magma / Blues / Oranges / tailwind_slate.
Multi-panel composition: see references/multi-panel.md for compose_grid / small_multiples / add_inset / shared legend & colorbar / marginal histogram.
Always pair color with redundant coding (LINE_STYLES, MARKERS, or HATCHES from ssci_style).
Step 4 -- Validate
Check every item in the Quality Checklist (Section 6 below) before saving.
If the figure includes statistical annotations (p-values, effect sizes, CI, inline statistics), read references/statistical-annotations.md for exact formatting rules. For APA figure text formatting details (number, title, Note, multi-panel conventions, mediation diagram conventions), read references/apa-figure-standards.md.
Step 5 -- Save and Output
Save the figure in multiple formats using save_figure():
The full catalog has 55 chart types organized by family. Use this top-level table for routing; then load the chart-family file for the detailed 6-section spec.
3.1 By chart family
Family
File
Chart sections (representative)
Core distribution & relationship
chart-types-core.md
§1 Grouped Bar, §2 Error Bar, §3 Line, §3.1 Annotated Time Series, §4 Scatter+Regression, §4.1 Scatter with Marginal Histogram, §5 Box, §6 Violin, §7 Correlation Heatmap
Time series with event markers (policy, intervention)
Annotated time series
core §3.1
Two continuous variables (r, regression)
Scatter + regression line
core §4
Distribution shape comparison
Box plot
core §5
Distribution with density
Violin plot
core §6
Multi-variable correlation matrix
Lower-triangle heatmap
core §7
Meta-analysis effect sizes
Forest plot
models §8
Multi-model coefficients side-by-side
Coefficient / dot-whisker plot
models §8.1, econ §26
SEM / CFA path structure
Path diagram
models §9
Instrumental variable identification
IV diagram
models §9.1 / econ §38
Mediation pathway (a, b, c')
Mediation diagram
models §10
Moderation / interaction
Interaction / simple slopes
models §11, §12
Continuous moderator marginal effect
Marginal effects plot
applied §31
Factor structure (EFA/PCA)
Scree + parallel analysis
models §17
Latent profile / class structure
Profile plot (LPA/LCA)
models §18
Individual trajectories
Growth curve
models §19
Robustness across specifications
Specification curve
models §32
Causal assumptions diagram
DAG
models §33
Difference-in-differences design
Event-study or DID parallel trends
econ §22, §23
Sharp cutoff design
Regression discontinuity plot
When NOT to use:
Bar chart for continuous distributions -- use violin, box, or raincloud instead (Weissgerber et al., 2015)
Rainbow / jet colormap -- use viridis, cividis, or Tol diverging schemes
Pie chart -- use grouped bar chart (APA does not define pie chart standards)
3D charts -- use 2D with faceting or color encoding
Sankey -- use mobility transition matrix (zero new deps; sociology-standard alternative)
4. Quick Reference: Core Style Parameters
Set automatically by apply_style(). Override via plt.rcParams[...] after the call. All numeric defaults live in scripts/ssci_style.py; never copy them across docs (SSOT).
Parameter
Rationale
font.family (sans-serif)
APA 7th recommends sans-serif for figures
font.size (8 pt body)
APA range 8--14 pt; 8 pt is legible at print column width
axes.spines.top / right = False
L-shaped axes maximize data-ink ratio
axes.linewidth
Exceeds APA minimum 0.5 pt; clear at print
savefig.dpi
Meets APA, Wiley, OUP, ASA line-art requirements
pdf.fonttype = 42
TrueType embedding; journals reject Type 3 fonts
mathtext.fontset = 'custom' (Arial italic)
Render r, t, F, p in body font (P0 fix)
errorbar.capsize
Visible cap without visual clutter
constrained_layout enabled
Prevents label clipping in multi-panel figures
Full parameter set: scripts/ssci.mplstyle (loaded by apply_style()).
Color Palettes
21 categorical palettes are registered (_PALETTE_REGISTRY in scripts/ssci_style.py). HEX values live exclusively in the SSOT; the table below references palettes by name only. Discover at runtime via list_palettes(category=..., publication_grade=...).
Pair every color encoding with a redundant channel: line style (LINE_STYLES), marker shape (MARKERS), or hatching (HATCHES).
Full palette catalog, academic citations, license credits, decision tree, and journal/discipline anchoring: references/color-system.md.
Figure Sizes
FIGURE_SIZES in scripts/ssci_style.py registers 30 named sizes: 3 generic layouts (single_column, one_half_column, full_width) + 27 chart-type-specific keys. Use the key, not the literal inches:
For one-off dimensions, fig_size(width_cm, height_cm) converts to inches.
Journal-specific column widths differ across the 12 presets; calling apply_style(journal=...) selects the right dimensions automatically (see JOURNAL_PRESETS in ssci_style.py for exact mm / DPI per preset). Full table: references/journal-presets.md.
5. Key Helper Functions
All 27 public helpers defined in scripts/ssci_style.py. Full NumPy-style docstrings (Parameters / Returns / Raises / Examples) live with each function.
5.1 Style & save (3)
Function
Purpose
apply_style(journal=None, *, mode='paper')
Apply 70+ rcParams, register colormaps, set font embedding. journal ∈ 12 keys (auto-loads matching palette + sizes); mode='slides' bumps fonts for talks.
fig_size(width_cm, height_cm)
Convert centimetres to inches for matplotlib figsize
Introspect registered palettes; returns list of dicts with name / category / publication_grade / cvd_grade / max_colors / source
get_emphasis_pair(focal=None, *, reference=...)
Return (focal, reference) pair for "treatment vs control" patterns; default reference is neutral gray (see SSOT); named focals: blue / red / green / orange / purple / navy / maroon
Add A, B, C panel labels; auto-styled per _ACTIVE_PRESET (e.g. Nature uses lowercase a/b/c, Science uses uppercase A/B/C); prefix='(' + suffix=')' add parentheses for any journal that requires them; journal= overrides for one-off mixing
Error bars included where applicable; type (SE, SD, or 95% CI) stated in planned Note text
Axis labels use Title Case, parallel to their axis
Legend inside figure area or below; Title Case entries; frameon=False
No gridlines, no 3D effects, no decorative elements
Multi-panel labels bold, top-left of each panel; case (A/B/C vs a/b/c) and font size follow the active journal preset's panel_label_case / panel_label_size (APA default: uppercase 12 pt; Nature: lowercase 9 pt; see journal-presets.md)
Figure saved as both PDF (vector) and PNG or TIFF (600 DPI raster)
pdf.fonttype = 42 confirmed (TrueType embedding)
Figure text (number, title, Note) output as separate Markdown, not embedded in the image
Load each file only when needed (progressive disclosure). The chart catalog is split across 5 files; load the family file matching the requested chart type, not the whole catalog.
APA 7th Figure number / title / Note format, font and italic rules, multi-panel specs, accessibility, §11 Mediation Diagram Conventions (SEM notation rules)
econ §24
Large-N continuous-X relationship
Binned scatter (binscatter)
econ §25
Full distribution + mean + density
Raincloud plot
applied §14
Publication bias / small-study effects
Funnel plot
applied §16
Time-to-event analysis
Kaplan-Meier survival curve
applied §20
Method comparison agreement
Bland-Altman plot
applied §21
Multi-group distribution stack
Ridgeline / joy plot
applied §27
Geographic distribution
Choropleth map
applied §28
Diagnostic / prediction performance
ROC + calibration
applied §29
Categorical transition / mobility
Mobility transition matrix
applied §30
Multi-panel composite
Multi-panel composition
multi-panel.md
Step 4: validating APA compliance; writing Figure text output; mediation diagram setup
p-value, effect size, CI formatting; statistical symbol italic rules; decimal place conventions; add_inline_stats / add_reference_line usage
Step 4: when figure includes statistical annotations
references/complexity-elements-catalog.md
Catalog of "publication-quality complexity elements" (white-halo lines, inset zooms, descriptor matrices, at-risk tables, CI ribbons, etc.) and which chart types use which elements
Stepping up an existing figure from "course assignment" feel to "top-SSCI" feel; choosing which complexity elements to layer onto a base chart
references/multi-figure-gallery-pitfalls.md
11 high-frequency cross-figure pitfalls + 60-second self-check sweep + 3 cognitive traps. Non-binding companion distilled from Phase 7 polish (88 P0 fixes on an 18-figure gallery)
Strongly recommended when generating ≥ 3 figures for the same surface (README gallery, paper figures, slide deck). Single-figure use can skip