โ† Back to Health & Fitness
Health & Fitness by @odrobnik

who-growth-charts

WHO child growth charts with percentile curves

0
Source Code

Generate WHO Child Growth Standards charts with percentile curves and child data overlay.

Features

  • Height-for-age (0-19 years)
  • Weight-for-age (0-10 years)
  • BMI-for-age (0-19 years)
  • Supports boys and girls
  • Downloads WHO data on demand from cdn.who.int (cached locally)
  • Overlays child's actual measurements with trend line

Examples

Height Weight BMI

Prerequisites

Install Python dependencies:

pip install pandas matplotlib scipy openpyxl

Usage

Basic Chart Generation

python3 ./scripts/growth_chart.py "Child Name" "DD.MM.YYYY" --sex F --type all

Arguments:

  • name: Child's name (used in chart title)
  • birthdate: Date of birth in DD.MM.YYYY format
  • --sex / -s: F (female) or M (male) โ€” default: F
  • --type / -t: height, weight, bmi, or all โ€” default: all
  • --data / -d: JSON file with measurement data
  • --output / -o: Output directory for charts

With Measurement Data

Create a JSON file with height/weight measurements (heights in meters, weights in kg):

{
  "heights": [ ["2024-01-15T10:00:00", 1.05] ],
  "weights": [ ["2024-01-15T10:00:00", 17.5] ]
}
python3 ./scripts/growth_chart.py "Emma" "06.07.2016" --sex F --data emma_data.json --type all

Integration with Withings

Combine with withings-family skill to fetch weight data automatically:

# Get Withings weight data (assuming withings-family skill is installed)
python3 ../withings-family/scripts/withings.py emma body > /tmp/withings.json

# Parse and generate charts
# (The growth chart script handles Withings JSON format if implemented, otherwise transform it)

Output

By default, charts and cache are written to:

  • <workspace>/who-growth-charts/
  • <workspace>/who-growth-charts/cache/

Where <workspace> is the folder that contains your skills/ directory (the script finds it automatically; it also prefers the current working directory if it looks like a workspace, which makes symlinked workspaces behave correctly).

You can override workspace discovery with WHO_GROWTH_CHARTS_WORKSPACE=/path/to/workspace.