I’ve been doing academic research in biology for the past ~8 years and really liked but also struggled to make good figures. I sometimes look back at the first version of my figures and it’s quite a journey from there to the published version. Then I wonder how I got there.
So I’ve been compiling what the main steps are that move my figures toward a satisfactory version, which are also just general advice to make good, publication-ready figures.
- One figure, one message
Just like a paragraph, a figure loses power when it tries to say too much at once. When deciding what to combine into panels, think about the figure legend you'll write, and how it will guide the reader through the story. If including multiple panels, they should reflect different elements of the same overall message. The order of your panels matters a lot: if panel A shows a pattern that raises a question, panel B can answer it, hence satisfying the reader's expectation.
- Make color meaningful and consistent
We tend to want to make figures colorful (sometimes without real reason). Try to channel that urge. If a figure doesn't need color, it's completely fine to keep it in shades of grey. Otherwise, the reader will be distracted by thinking "what do these colors mean?". When you do use color, make sure it carries information: different colors for categories of a variable, or a gradient for a continuous one, in an intuitive direction (warmer = higher temperature, for instance). Also revise your color coding across the whole manuscript: if three colors represent your three treatment conditions in your first figure, keep those same three colors in every figure after that. Finally, it's good practice to pick a colorblind-friendly palette.
- Layer information by combining color, shape, and size
Journal/thesis space is often limited, and you probably have more interesting results than room to show them. Keep your figure's main message pointed in one direction, but you can layer in extra information through point color, shape ("pch" in R, "marker" in Python), and size. For example: a scatterplot of your two key variables, colored by species, shaped by sex, and sized by body mass (yes, I’m biology biased). This gives you three extra dimensions of information while keeping the story in one clean plot.
- Resize panels based on how much they need to say
If one of your plots is super simple to interpret, it may only need two tick marks (say, 0 and the max value) and bigger points. You can just shrink it. Doing so will free up space for the panels that are more complex and need more interpretive work. Also, varying panel sizes helps establish hierarchy. It guides the reader’s eye to your primary message and keeps the secondary details for the most interested readers.
- Edit your figure outside of R or Python
If you love tweaking axis fonts and border thickness in code, or more generally, if you’re super comfortable with coding (which is more and more accessible with AI), you may disagree with this advice.
For me, a 100% coded approach tends to feel rigid for making and polishing figures. I like to build the core figure in my coding environment, then export it as a vector file (PDF or EPS) and finish the polish in design software (Illustrator, Affinity Designer, Inkscape, even PowerPoint!). Vector format also means infinite scalability: your figure looks equally sharp as a tiny panel or blown up on a poster. Editing "by hand" lets you adjust almost anything (except the data, of course): adjust element size and position, ensure consistent fonts across panels, and refine colors. You can even draw custom schematics or illustrations to convey complementary details.
And honestly, it is so relaxing to spend time fine-tuning your figure in Illustrator after a long day buried in r/Python code to generate it.
- Find what's unnecessary, and cut it
You have a figure that’s correct and interpretable with some effort. Now ask yourself: what result do I actually want this to convey, and what’s standing in the way? Usually, you can easily spot elements to cut, such as:
• Unnecessary frames or heavy outer borders
• Redundant axes or labels
• Overcrowded tick marks
• Large empty spaces breaking up your panel flow etc.
Remove all of this! Let the essential message reach your reader’s eye as directly as possible.
I would love to hear your tips/advice from your own experience, or your main struggles when going from a raw to a publishable figure 😊