How to digitize a plot from a PDF (without losing precision)
A practical guide to recovering the underlying numbers from a figure in a research paper — calibration, picking, and the precision tradeoffs that nobody warns you about.
You're reading a paper. The result you actually need is in Figure 4 — a scatter plot of predicted versus experimental values — and the authors didn't publish the raw data. You want those numbers. Not screenshots, not approximations: the actual coordinates so you can replot, compare against your own results, and cite them properly.
This is plot digitization, and it's a quiet but constant task in empirical research. This post walks through how it works, what makes it precise (or not), and a few practical tricks that take it from "good enough" to "trustworthy."
What plot digitization actually is
Every figure on a printed page is a projection: the author had data, then a plotting library mapped each (x, y) value to a pixel position based on the axis scales. Digitization is the inverse: you mark the axes, you click data points, and a small calculation reverses the projection to recover the original coordinates.
The math is trivial. The hard parts are:
- Calibrating the axes accurately. If your
X₁andX₂anchors are off by a pixel each, every data point you pick inherits that error proportionally. - Clicking the data point's actual center. Most plot markers are 5–10 pixels wide. Your click can be off by 3–4 of those pixels without you noticing.
- Handling log axes correctly. A log-scale axis means a uniform linear distance on screen corresponds to a geometric distance in data space. Most digitization tools get this wrong silently.
The basic workflow
The four-anchor approach is the standard:
- Mark the position of a known x-value on the x-axis (
X₁). This is usually the origin or the leftmost labeled tick. - Mark a second known x-value (
X₂). Usually the rightmost labeled tick. - Do the same for y (
Y₁,Y₂). - For each anchor, type in what the value actually is (e.g.
0and1, or10⁻⁹and10⁻⁶).
Now the tool has a linear transformation from screen-pixel to data-value:
data_x = X₁_value + (pixel_x - X₁_pixel) / (X₂_pixel - X₁_pixel) * (X₂_value - X₁_value)
…and the same for y. Click a data point at (pixel_x, pixel_y) and the tool inverts the transform to spit out (data_x, data_y).
For log axes, the only difference is you do the math in log space:
data_x = 10 ^ (log10(X₁_value) + (pixel_x - X₁_pixel) / (X₂_pixel - X₁_pixel) * (log10(X₂_value) - log10(X₁_value)))
This is where a lot of tools fail. If your axis is 10⁻⁹ to 10⁻⁶ and the tool linearly interpolates without taking the log first, your data point at 50% across the axis comes out as ~5×10⁻⁷ instead of the correct ~3.16×10⁻⁸. Always check that your tool understands log axes if your figure uses them.
Practical precision tips
Zoom before calibrating. The single biggest gain in accuracy is calibrating the axes at maximum zoom. A 1-pixel error at fit-to-screen becomes a sub-pixel error at 400% zoom. This costs you 10 seconds and dramatically improves every subsequent click.
Use the cross-hair convention. Pick the intersection of the tick label's underline and the axis line as your anchor, not the center of the tick mark. The tick mark center varies between plotting libraries; the intersection is unambiguous.
For overlapping points, use a magnifier loupe. A circular magnifier that follows your cursor lets you see whether a "single" point is actually two or three points stacked. Voixes uses this; so does WebPlotDigitizer; it's table stakes for any serious tool.
Calibrate twice and average. If you'll publish the recovered data, calibrate, pick a known reference point you already know the answer for, and see how far off you are. If it's more than 1% off, recalibrate.
Save the calibration. If you ever need to revisit the figure (a reviewer asks for one more point, six months later), you do not want to start over.
Common pitfalls
- Photographing the screen instead of using the PDF. Lens distortion adds 2–5% error before you even click. Always work from the original PDF or vector source.
- Trusting auto-detect. Some tools claim to auto-detect data points. They work for clean plots and fail silently on noisy ones. Always inspect what the auto-detect found before exporting.
- Forgetting to record the figure's caption and source. Your CSV without provenance is just numbers. Always export with the original paper citation.
When digitization isn't enough
If you need all the points in a 500-point scatter plot and you need them at publication quality, contact the authors. Email the corresponding author and ask for the raw data. Most will share it within a week. Digitization is for when that fails, or when you need a handful of points right now.
What Voixes does differently
You can try it on any PDF — just open one in Voixes, select a figure, and pick the Digitize tool from the right rail.
Voixes is a native Mac app for reading research papers. Drag-select any plot, click each point, and get a CSV — locally, without uploading the PDF anywhere.