Article 4 min read

Workshop: Log-Scale Chart Without Arithmetic Mistakes

Extract 12 data points from a semi-log decay curve spanning two orders of magnitude. The chart type AI extraction gets reliably wrong — and the calibration trick that makes it trivial for a deterministic tool.

Illustration for "Workshop: Log-Scale Chart Without Arithmetic Mistakes"

Workshop four of five. Semi-log line chart, y-axis log-scaled from 1300 to 18, with the calibration trick that turns “tricky log math” into “two clicks at visible powers of ten.” Every vision LLM gets this catastrophically wrong; calibrated extraction wins by the widest margin here.

The practice chart

Concentration Decay Over Time — semi-log line, 12 monthly points

Open this chart in DataFromChart →

12 data points, exponential decay over 12 months. Y-axis Concentration (ng/mL) on log scale; values span ~1230 to 18. The line looks straight because exponential decay is straight on a log scale.

Target: 12 (month, concentration) pairs.

The log calibration trick

Linear calibration takes two known values and interpolates. Log is identical except you pick two powers of ten visible on the chart and tell the tool it’s a log axis.

The math the tool does:

log_position = (point_px - axis_start_px) / (axis_end_px - axis_start_px)
value = 10 ^ (log10(start_value) + log_position * (log10(end_value) - log10(start_value)))

You don’t do any of this. Just (a) mark the y-axis as log, and (b) calibrate at values you can see.

The right calibration points here are 100 and 1000 — both visible gridlines, both powers of ten.

Step 1: open the chart

Advance to POINTS. Place points, calibrate after.

Step 2: place the 12 points

Click each marker left to right. The line is straight, so points look evenly spaced — but y-values span two orders of magnitude.

Zoom in for low-value points. Months 10, 11, 12 sit near y=20-40 where gridlines compress and small click errors are big percentage errors.

Step 3: calibrate the y-axis as log

In AXES, set the y-axis scale to log (toggle in axis config). Critical — without it, calibration is linear and every extraction is wrong by orders of magnitude.

Drag the lower calibration line onto 10² (100). Enter 100. Drag the upper to 10³ (1000). Enter 1000.

Two clicks, two values, one toggle.

Step 4: x-axis calibration

X-axis is linear — months 1 through 12. Drag to the 2 and 10 ticks, enter 2 and 10. (Use 1 and 12 if visible; the tool extrapolates.)

Step 5: read and export

Click DATA. Values should follow exponential decay, dropping ~1.4× per month. Export as XLSX or CSV.

Answer key

Chart generated from y = 1500 * exp(-0.385 * x), rounded to two decimals:

MonthTrue concentration (ng/mL)
11231.72
2840.99
3574.20
4392.05
5267.68
6182.77
7124.79
885.20
958.17
1039.72
1127.12
1218.52

Compute MAE in log10 space, not linear. Linear MAE is dominated by the large early values. Log10 MAE treats a 10% error at 1230 the same as at 18 — what you want across orders of magnitude.

import math
log_mae = sum(abs(math.log10(true) - math.log10(extracted))
              for true, extracted in zip(true_values, your_values)) / 12

Target: log10 MAE under 0.02 (about 5% linear at any scale).

Common mistakes

  • Forgetting to toggle “log”. Biggest source of error. Tool defaults to linear, giving wildly wrong values. Set scale before calibrating.
  • Calibrating at non-round values. You can use any two, but non-powers of ten multiply precision error. 127 and 893 over 100 and 1000 is valid and operationally bad.
  • Imprecise clicks on low-value points. Gridlines below the second-lowest power of ten are compressed. A 1-pixel error at y=20 dwarfs the same error at y=1000. Zoom in.

For the long version, see extract data from a log chart.

How this compares to AI

Worst-case chart for vision LLMs. From our benchmark:

  • Claude Sonnet 4.6: 37% MAE. Pixel positions right, values returned as if linear. Late-month points 5-10× too high.
  • GPT-4o: 41% MAE. Same failure mode.
  • Gemini 2.5 Pro: 39% MAE. Same failure mode.

All three fail identically for a structural reason — see why AI gets chart data wrong. Vision LLMs read “log” as a word but don’t do 10^x arithmetic conditional on visual position. They return a linear-interpolation read of a log chart.

Calibrated extraction is sub-5% MAE in linear terms — because the math happens in the tool, not the head of a model.

Next

Try it on your own chart

Upload an image, click your data points, calibrate the axes, and export CSV. Under three minutes, no login required for a single export.

Open the extractor

Keep reading

All articles