Your Figure Is the First Thing Reviewers See
Here's what happens when reviewers open your paper: they skim the abstract, then flip through the figures. Before reading a single equation, they're forming impressions.
A pixelated screenshot? Red and green lines that colorblind readers can't distinguish? Axes without labels? These signal "this author doesn't care about details"—and that impression colors everything that follows.
But a clean, well-designed figure? That signals competence. It makes your paper easier to read, more memorable, and more likely to be cited.
Here's how to get there.
Figure Design Principles
Clarity First
Every element should serve a purpose:
- Remove unnecessary gridlines
- Eliminate chartjunk (3D effects, decorative elements)
- Use clear, readable labels
- Include only essential information
Consistency
Across all figures in a paper:
- Same font family
- Consistent color scheme
- Similar layout approach
- Matching line weights
Accessibility
Design for all readers:
- Don't rely solely on color (use shapes, patterns)
- Ensure sufficient contrast
- Make text large enough to read at print size
- Include descriptive captions
Technical Requirements
Resolution
Print requires high resolution:
| Format | Resolution | Use | |--------|-----------|-----| | Bitmap (PNG, TIFF) | 300+ dpi | Photos, screenshots | | Vector (PDF, EPS, SVG) | N/A (scalable) | Charts, diagrams |
Always prefer vector formats for charts and diagrams. They scale perfectly to any size.
File Formats
PDF: Best for LaTeX. Vector graphics, small files, universal support.
EPS: Traditional vector format. Some journals still require it.
PNG: For raster graphics. Use when you must have bitmap format.
TIFF: Archival quality. Large files, sometimes required by journals.
SVG: Web vector format. Convert to PDF for LaTeX.
Size
Design figures at their final print size:
- Column width: ~3.5 inches (single column)
- Page width: ~7 inches (two-column span)
- Check your target journal's specifications
Designing at print size ensures text remains readable.
Color Choices
Colorblind-Friendly Palettes
About 8% of men have some form of colorblindness. Choose palettes that work for everyone:
Safe combinations:
- Blue and orange
- Blue and yellow
- Purple and green (with caution)
Avoid:
- Red and green together
- Color as only distinguishing feature
Print Considerations
Papers are often printed in black and white:
- Test how figures look in grayscale
- Use patterns, shapes, or labels as backup
- Ensure sufficient contrast
Consistent Color Coding
Use the same colors for the same concepts:
- If Group A is blue in Figure 1, it should be blue everywhere
- Create a color scheme and apply it consistently
Charts and Plots
Choosing the Right Chart
| Data Type | Chart Type | |-----------|------------| | Comparison | Bar chart | | Change over time | Line chart | | Distribution | Histogram, box plot | | Correlation | Scatter plot | | Composition | Pie chart (use sparingly), stacked bar | | Relationship | Scatter, bubble |
Common Mistakes
Too much data in one chart: Split into multiple focused charts.
Inappropriate chart type: Pie charts for time series, line charts for categories.
Missing context: No axis labels, unclear units, missing legends.
Truncated axes: Can mislead about proportions—use carefully and clearly label.
Creating Figures
Python with Matplotlib
import matplotlib.pyplot as plt
import numpy as np
# Set publication style
plt.rcParams.update({
'font.family': 'serif',
'font.size': 10,
'axes.labelsize': 10,
'axes.titlesize': 10,
'legend.fontsize': 8,
'xtick.labelsize': 8,
'ytick.labelsize': 8,
'figure.dpi': 300,
'savefig.dpi': 300,
})
# Create figure at print size
fig, ax = plt.subplots(figsize=(3.5, 2.5)) # column width
# Plot data
x = np.linspace(0, 10, 100)
ax.plot(x, np.sin(x), label='sin(x)')
ax.plot(x, np.cos(x), label='cos(x)')
# Labels and legend
ax.set_xlabel('Time (s)')
ax.set_ylabel('Amplitude')
ax.legend()
# Save as PDF (vector)
plt.savefig('figure.pdf', bbox_inches='tight')R with ggplot2
library(ggplot2)
library(extrafont)
# Publication theme
theme_publication <- theme_minimal() +
theme(
text = element_text(family = "serif", size = 10),
axis.text = element_text(size = 8),
legend.text = element_text(size = 8),
panel.grid.minor = element_blank()
)
# Create plot
p <- ggplot(data, aes(x = time, y = value, color = group)) +
geom_line() +
labs(x = "Time (s)", y = "Amplitude") +
scale_color_brewer(palette = "Set1") +
theme_publication
# Save at print size
ggsave("figure.pdf", p, width = 3.5, height = 2.5, units = "in")TikZ in LaTeX
For diagrams directly in LaTeX:
\usepackage{tikz}
\usetikzlibrary{arrows.meta, positioning}
\begin{figure}
\centering
\begin{tikzpicture}[
node distance=1.5cm,
box/.style={rectangle, draw, minimum width=2cm, minimum height=0.8cm},
arrow/.style={-Stealth, thick}
]
\node[box] (input) {Input};
\node[box, right of=input] (process) {Process};
\node[box, right of=process] (output) {Output};
\draw[arrow] (input) -- (process);
\draw[arrow] (process) -- (output);
\end{tikzpicture}
\caption{System overview.}
\end{figure}pgfplots for Data Visualization
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}[
width=0.8\columnwidth,
height=5cm,
xlabel={Time (s)},
ylabel={Value},
legend pos=north east
]
\addplot[blue, thick] table[x=time, y=value1] {data.csv};
\addplot[red, thick] table[x=time, y=value2] {data.csv};
\legend{Series 1, Series 2}
\end{axis}
\end{tikzpicture}
\caption{Experimental results.}
\end{figure}Including Figures in LaTeX
Basic Inclusion
\usepackage{graphicx}
\begin{figure}[htbp]
\centering
\includegraphics[width=0.8\columnwidth]{figure.pdf}
\caption{Description of the figure.}
\label{fig:results}
\end{figure}Placement Options
[h] % Here, if possible
[t] % Top of page
[b] % Bottom of page
[p] % Separate page of floats
[H] % HERE (requires float package, use sparingly)Use [htbp] to give LaTeX flexibility.
Subfigures
\usepackage{subcaption}
\begin{figure}[htbp]
\centering
\begin{subfigure}[b]{0.45\columnwidth}
\includegraphics[width=\textwidth]{fig-a.pdf}
\caption{First condition}
\label{fig:result-a}
\end{subfigure}
\hfill
\begin{subfigure}[b]{0.45\columnwidth}
\includegraphics[width=\textwidth]{fig-b.pdf}
\caption{Second condition}
\label{fig:result-b}
\end{subfigure}
\caption{Comparison of conditions.}
\label{fig:comparison}
\end{figure}Wide Figures (Two-Column Documents)
\begin{figure*}[t]
\centering
\includegraphics[width=\textwidth]{wide-figure.pdf}
\caption{A figure spanning both columns.}
\end{figure*}Captions and Labels
Writing Good Captions
Captions should be self-contained:
- What the figure shows
- Key methods if necessary
- Main takeaway
Poor: "Results of the experiment."
Better: "Mean response times (±SD) across conditions. Participants in the treatment group showed significantly faster responses (p < 0.001)."
Consistent Labeling
\label{fig:results} % For figures
\label{tab:summary} % For tables
\label{eq:schrodinger} % For equationsReference with \ref{fig:results} or \cref{fig:results} (with cleveref).
Tools Summary
| Tool | Best For | Output | |------|----------|--------| | Matplotlib | Data plots (Python) | PDF, PNG | | ggplot2 | Statistical graphics (R) | PDF, PNG | | TikZ | Diagrams in LaTeX | Native LaTeX | | pgfplots | Data in LaTeX | Native LaTeX | | Inkscape | Vector editing | PDF, SVG | | Illustrator | Professional graphics | PDF, EPS |
Workflow Recommendation
- Generate base plot with Matplotlib, R, or similar
- Export as PDF (vector format)
- Touch up if needed in Inkscape or Illustrator
- Include in LaTeX with
\includegraphics - Iterate until perfect
Keep source files (Python scripts, R scripts) in your project for reproducibility.
Final Checklist
Before submission:
- [ ] All figures are high resolution (300+ dpi for raster)
- [ ] Vector formats used for charts/diagrams
- [ ] Fonts are readable at print size
- [ ] Colors work in grayscale
- [ ] Colorblind-friendly palette used
- [ ] Consistent style across all figures
- [ ] Axes labeled with units
- [ ] Legends clear and complete
- [ ] Captions descriptive and self-contained
- [ ] All figures referenced in text
- [ ] File formats match journal requirements
Conclusion
Professional figures require attention to:
- Design - Clear, minimal, purposeful
- Technical quality - Resolution, format, size
- Accessibility - Color choices, contrast, labels
- Integration - Consistent with paper, proper captions
Invest time in your figures. They're often the first thing readers look at—and the last thing they remember.