Menu

Resource5 min read

Journal Figure Requirements Cheat Sheet (2026 Edition)

By Francesco Villasmunta
Journal Figure Requirements Cheat Sheet (2026 Edition)

Bookmark this page. Every major journal has different figure requirements for DPI, format, fonts, and sizing. This cheat sheet gives you the specs in one place.

Sections

0.Live Code: Journal-Compliant Figure

1.Quick-Reference Table

2.DPI and Resolution

3.File Format Rules

4.Font and Sizing

5.Color and Accessibility

0. Live Code: Journal-Compliant Figure

This figure meets Nature single-column specs: 89 mm width, 8 pt Arial, 300 DPI, panel label, minimal decoration. Edit the code to match your journal.

Live Code Editor
Code EditorPython
Loading editor...
Live Preview

Preparing preview

Running once automatically on first load

Learn by Experimenting

This is a safe playground for learning! Try changing:

  • Colors: Modify color values to see different palettes
  • Numbers: Adjust sizes, positions, or data ranges
  • Labels: Update titles, axis names, or legends

Edit the code, run it, then open the full data visualization tool to continue with your own dataset.

1. Quick-Reference Table

JournalMin DPIFormatsFontsSingle ColDouble Col
Nature300TIFF, EPS, PDFArial, Helvetica89 mm183 mm
Science300EPS, PDF, AIHelvetica, Arial85 mm174 mm
Cell300TIFF, EPS, PDFArial, Helvetica85 mm174 mm
PLOS ONE300TIFF, EPSArial83 mm173 mm
IEEE300TIFF, EPS, PDFTimes New Roman88 mm181 mm
ACS300TIFF, EPSArial, Helvetica84 mm175 mm
Elsevier300TIFF, EPS, PDFArial, Helvetica90 mm190 mm
Springer300TIFF, EPSArial84 mm174 mm

2. DPI and Resolution

Try it

Try it now: review your figure before submission

Upload your current plot and get an AI critique with concrete fixes for clarity, typography, color, and journal readiness.

Open AI Figure Reviewer

Newsletter

Get a weekly Python plotting tip

One concise tip each week for cleaner, faster scientific figures. Built for researchers who publish.

No spam. Unsubscribe anytime.

300 DPI

Photographs, continuous tone

600 DPI

Line art, graphs, charts

1200 DPI

Fine line art, thin lines

Common Mistake

Upsampling a 96 DPI image to 300 DPI does not add detail - it just makes the file bigger with blurry pixels. Always generate figures at the target DPI from the start.

3. File Format Rules

TIFF (LZW)

+ Universally accepted, lossless compression

- Large file sizes (10-50 MB)

EPS / PDF

+ Vector = infinite resolution for line art

- Not all journals accept PDF

PNG

+ Small files, lossless, web-friendly

- Some journals reject (use TIFF instead)

JPEG

+ Small file size

- Lossy compression introduces artifacts - avoid for data figures

4. Font and Sizing

Font family

Arial or Helvetica (sans-serif). Never use decorative or serif fonts in figures.

Minimum size

6 pt after scaling. Most journals require 7-8 pt for legibility.

Axis labels

8-10 pt bold. Must be readable at final print size.

Panel labels

10-12 pt bold, lowercase (a, b, c) or uppercase (A, B, C) per journal style.

Title

Usually NOT on the figure - goes in the caption instead.

5. Color and Accessibility

Colorblind-safe

Use palettes like viridis, cividis, or Wong palette. Avoid red-green only distinctions.

Grayscale test

Print your figure in B&W. If you can't distinguish groups, add patterns or markers.

Color charges

Some journals charge $500+ for color. Provide a grayscale alternative.

Contrast ratio

Minimum 4.5:1 contrast ratio for text against backgrounds (WCAG AA).

Chart gallery

Journal-Ready Chart Templates

Start from a template that already meets these specs.

Browse all chart types →
Bar chart comparing average scores across 5 groups with error bars
Comparisonmatplotlib, seaborn
From the chart galleryComparing performance across categories

Bar Chart

Compares categorical data using rectangular bars with heights proportional to values.

Sample code / prompt

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats

# Generate performance scores for 5 treatment groups
np.random.seed(42)
groups = ['Control', 'Treatment A', 'Treatment B', 'Treatment C', 'Treatment D']
n_samples = 30
Scatter plot of height vs weight colored by gender with regression line
Statisticalmatplotlib, seaborn
From the chart galleryCorrelation analysis between metrics

Scatterplot

Displays values for two variables as points on a Cartesian coordinate system.

Sample code / prompt

import matplotlib.pyplot as plt
import numpy as np
from scipy import stats
import pandas as pd

# Generate sample data
np.random.seed(42)
n_samples = 200
height = np.random.normal(170, 8, n_samples)
weight = height * 0.6 + np.random.normal(0, 8, n_samples) - 50
Multi-line graph showing temperature trends for 3 cities over a year
Time Seriesmatplotlib, seaborn
From the chart galleryStock price tracking over time

Line Graph

Displays data points connected by straight line segments to show trends over time.

Sample code / prompt

import matplotlib.pyplot as plt
import numpy as np

# Generate temperature data for 3 major US cities over 12 months
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
nyc = [30, 32, 40, 52, 65, 75, 82, 81, 74, 63, 50, 38]
miami = [65, 66, 70, 76, 82, 87, 90, 90, 87, 80, 72, 66]
chicago = [25, 27, 35, 48, 62, 72, 80, 79, 71, 60, 45, 32]

# Create figure with enhanced styling
Correlation heatmap with diverging color scale and coefficient annotations
Statisticalseaborn, matplotlib
From the chart galleryCorrelation analysis between variables

Heatmap

Represents data values as colors in a two-dimensional matrix format.

Sample code / prompt

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np

# Create correlation matrix for financial metrics
metrics = ['Revenue', 'Profit', 'Expenses', 'ROI', 'Customers', 'AOV', 'Marketing', 'Employees']
correlation_data = np.array([
    [1.00, 0.85, -0.45, 0.72, 0.88, 0.65, 0.72, 0.55],
    [0.85, 1.00, -0.78, 0.92, 0.75, 0.58, 0.63, 0.48],
Box and whisker plot comparing gene expression across 4 genotypes with significance brackets
Distributionseaborn, matplotlib
From the chart galleryComparing experimental groups in scientific research

Box and Whisker Plot

Displays data distribution using quartiles, median, and outliers in a standardized format.

Sample code / prompt

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats

# Generate gene expression data for 4 genotypes
np.random.seed(42)
genotypes = ['WT', 'KO1', 'KO2', 'Mutant']
n_per_group = 20
Line graph with error bars showing 95% confidence intervals
Statisticalmatplotlib
From the chart galleryScientific data presentation

Error Bars

Graphical representations of the variability of data indicating error or uncertainty in measurements.

Sample code / prompt

import numpy as np
import matplotlib.pyplot as plt
from scipy import stats

# Generate bacterial growth data with replicates
np.random.seed(42)
time_points = np.array([0, 4, 8, 12, 18, 24])
mean_values = np.array([10, 25, 80, 250, 600, 800])

# Generate 5 replicates per time point with noise

Generate Journal-Compliant Figures Instantly

Tell Plotivy your target journal and it applies the correct DPI, fonts, and dimensions automatically.

Try Free
Tags:#publication#journal requirements#cheat sheet#nature#science#DPI#figure guidelines

Found this helpful? Share it with your network.

FV
Francesco Villasmunta

Experimental Physicist & Photonics Researcher

Hands-on experience in silicon photonics, semiconductor fabrication (DRIE/ICP-RIE), optical simulation, and data-driven analysis. Built Plotivy to help researchers focus on discoveries instead of data struggles.

More about the author

Visualize your own data

Apply the techniques from this article to your own datasets. Upload CSV, Excel, or paste data directly.

Start Analyzing - Free