# Healthy-eating charts

Six PNGs (1600x900) generated by `make_charts.py` for the post *How to eat
healthy, according to the evidence*.

Unlike the meal-service charts, these have no dataset behind them: each is a
handful of published figures. Every number is hardcoded in the script and
appears in one of two places:

- the rubric page (/research/health/rubric/)
- the post

Nothing is re-rounded or re-estimated, with one exception. The processed-meat
absolutes (4% to 4.7%, 40% to 44%, up to 54%) are derivations from published
relative risks. They are labelled as derivations in the finding, and printed on
the chart as "applied to lifetime risk".

## Regenerate

From this directory:

```bash
docker run --rm -v "$PWD":/work -w /work python:3.12-slim \
  bash -c "pip install --quiet matplotlib && python make_charts.py"
```

## Charts

| File | What it shows | Source line printed on the image |
|---|---|---|
| `ward-trial-decomposition.png` | The ~950 kcal/day overeating effect split into calorie density +662, engineered tastiness +158 and processing itself +128, with the +128 confidence interval (-8 to +265) drawn under its bar | NIH four-arm ward trial, 36 completers, results posted 2026, not peer-reviewed |
| `calorie-density.png` | 530 kcal in 100 g of potato chips against 100 to 130 kcal in 100 g of chicken and vegetables | USDA, per 100 g |
| `fiber-mortality.png` | Death rate 100 in the lowest-fiber eaters against 70 to 85 in the highest | Reynolds 2019, pooled analysis of 185 long-term studies and 58 trials |
| `processed-meat-risk.png` | Lifetime risk at 50 g of processed meat a day: colorectal cancer ~4% to ~4.7%, type 2 diabetes ~40% to ~44%, up to 54% on the higher pooled estimates | IARC 2015. Pooled diabetes estimates from Li 2024 (the +4) to Pan 2011 (the +14), applied to lifetime risk |
| `liquid-vs-solid.png` | Compensation at other meals: +118% for 450 calories a day as jelly beans, -17% for the same as soda | DiMeglio and Mattes 2000, n=15, 450 calories a day for four weeks each |
| `dose-multiples.png` | Study dose over human intake on a log scale, with the denominator printed for every multiple: BHA 8,000x to 33,000x against the EFSA 2011 adult mean, polysorbate-80 75x to 250x against the FDA upper-bound adult estimate and 60x to 80x against the EFSA 2015 toddler high consumer, carboxymethylcellulose 5x to 11x against the FDA upper-bound adult estimate | EFSA 2011 and 2015 intake estimates, Shah 2017 (FDA) adult estimate, Chassaing 2022 trial dose |

## Where each number comes from

- **+662 / +158 / +128, 95% CI -8 to 265, p<0.0001 / p=0.023 / p=0.065, n=36** —
  rubric headline 1 (NIH one-factor-at-a-time ladder NCT05290064, 38 enrolled,
  36 completed).
- **530 and 100 to 130 kcal per 100 g** — the post's own calorie-density SVG,
  sourced to USDA.
- **100 vs 70 to 85, and 15% to 30% lower** — the post's fiber SVG and rubric
  Reynolds 2019 entry.
- **4% to 4.7%, 40% to 44%, up to 14 points (so up to 54%), 15% to 18% per
  50 g/day** — rubric headline 2 and the post's processed-meat section. The
  +4 comes from applying Li 2024's relative risk to a ~40% lifetime baseline,
  the +14 from Pan 2011's.
- **+118% and -17%** — rubric's liquid-sugar caveat; n=15 and the 450 kcal for
  four weeks come from the post's DiMeglio and Mattes source line.
- **All four dose multiples and their denominators** — the rubric's
  "Dose multiples, stated with denominators" table, plus the post's line on
  the FDA's upper-bound adult estimate for the emulsifier mice.

## Adult emulsifier denominator

The adult multiples on `dose-multiples.png` use Shah 2017 (FDA CFSAN), the upper-bound estimate of US adult intake at maximum use levels: polysorbate-80 10 to 20 mg/kg bw/day and carboxymethylcellulose 20 to 40 mg/kg bw/day.

- Polysorbate-80 in mice, 1% in drinking water at about 1,500 to 2,500 mg/kg bw/day, is 75x to 250x that adult estimate. Against the EFSA 2015 toddler high consumer (24.5 mg/kg bw/day) the 1,500 to 2,000 mg/kg bw/day figure gives 60x to 80x.
- The carboxymethylcellulose human trial dose, 15 g/day, is about 214 mg/kg bw/day at 70 kg. That is 5x to 11x the adult estimate and about 0.4x the EFSA 2018 toddler 95th percentile of up to 506 mg/kg bw/day.

## Colour

The four hues match the inline SVGs already in the post (`#d1495b` red,
`#2a9d8f` teal, `#e8a33d` amber, `#9aa5b1` grey), so the PNGs and the SVGs
read as one visual system. Grey always means a baseline or an effect the study
could not separate from zero. Every series is direct-labelled, so no chart
relies on colour alone.
