Arctic Tracker / Figures / trade-enforcement

Figure 6, Top 10 species by trade volume; by IUCN status; purposes; appendix

How this page was produced derived

Read from figure_provenance.json, generated by the pipeline that produces the figures and copied here byte for byte at commit 70da249, generated 2026-10-21. The copy fails rather than completes if any artifact it names is missing. Nothing on this page is authored in this application.

Trade Enforcement / Wild-Origin Share. Top 10 species by trade volume; by IUCN status; purposes; appendix. Manuscript figure 6, as the pipeline renders it. Its panels, axes and labels are listed below the figure. The values it was drawn from are tabulated below it.
The vector this manuscript figure is bound to, served from the deposit as figure2.svg. It is the pipeline's own output, not a screenshot, and not redrawn for this page. Open it on its own to pan and zoom a dense figure.
What this figure draws, in its own words

Axes. Total Trade Records · CITES Appendix · Trade Purpose · Trade Records

Panels. 3 in this figure.

  • (a) Top 10 Most-Traded Species
  • (b) Trade by CITES Appendix
  • (c) Trade by Purpose Category

Labels, in the order the figure carries them. 7,282 · 11,865 · 19,361 · 24,730 · 25,683 · 26,139 · 34,668 · 38,822 · 86,802 · 195,775 · 0 · 50k · 100k · 150k · 200k · Sperm Whale · Sandhill Crane · North American River Otter · Polar Bear · Narwhal · Atlantic Walrus · Peregrine Falcon · Canada Lynx · Gyrfalcon · Siberian sturgeon · 134,533 · 331,361 · 26,178 · 23 · I · II · III · N (not listed when shipped) · 0 · 50k · 100k · 150k · 200k · 250k · 300k · 329,770 · 109,962 · 21,421 · 10,524 · 8,121 · 4,676 · 2,931 · 1,673 · 1,568 · 1,268 · 93 · 88 · Commercial · Personal · Hunting Trophy · Scientific · Unspecified · Breeding · Circus/Exhibition · Educational · Zoo · Reintroduction · Medical · Law Enforcement · 0 · 50k · 100k · 150k · 200k · 250k · 300k · Arctic Species Trade Patterns (1975-2024) Trade volume, CITES regulation, and usage patterns | 492,095 trade records

The numbers in this figure

26 rows from figure2_source_data.csv, read out of source_data.zip in the deposit. Not a copy: the page reads the archive a reader downloads, so the two cannot disagree. The filename carries the pipeline's figure number, which is not this figure's number; the archive's index states the binding.

The archive's digest: 3558736147e731a25c113309a5af49e534421701d97c1324ddf703aed3d45266

All 26 rows, 4 columns

The table scrolls inside its frame; the header stays in place.

PanelpanelCategorycategoryValue labelvalue_labelTrade recordstrade_records
a_top10_speciesAcipenser baeriiSiberian sturgeon195775
a_top10_speciesFalco rusticolusGyrfalcon86802
a_top10_speciesLynx canadensisCanada Lynx38822
a_top10_speciesFalco peregrinusPeregrine Falcon34668
a_top10_speciesOdobenus rosmarusAtlantic Walrus26139
a_top10_speciesMonodon monocerosNarwhal25683
a_top10_speciesUrsus maritimusPolar Bear24730
a_top10_speciesLontra canadensisNorth American River Otter19361
a_top10_speciesGrus canadensisSandhill Crane11865
a_top10_speciesPhyseter macrocephalusSperm Whale7282
b_by_appendixIIII331361
b_by_appendixII134533
b_by_appendixIIIIII26178
b_by_appendixNN23
c_by_purposeTT329770
c_by_purposePP109962
c_by_purposeHH21421
c_by_purposeSS10524
c_by_purpose(blank)(blank)8121
c_by_purposeBB4676
c_by_purposeQQ2931
c_by_purposeEE1673
c_by_purposeZZ1568
c_by_purposeNN1268
c_by_purposeMM93
c_by_purposeLL88

Binding curated

trade-enforcement · pipeline artifact figure2 · binding confirmed by panel titles against the caption on 2026-08-14

Binding evidence, as the record states it: CONFIRMED 2026-08-14, and REBOUND from figure1. figure2_trade_enforcement.py builds three named panels: '(a) Top 10 Most-Traded Species', '(b) Trade by CITES Appendix', '(c) Trade by Purpose Category'. The manuscript caption is 'Top 10 species by trade volume; by IUCN status; purposes; appendix'. Three of the four elements match by name. figure1_publication.py builds wild-origin panels instead ('Top 15 species by wild-origin trade'), which is manuscript Figure 6's subject and is already bound to figure8. The earlier note said neither candidate carried a trade-purpose column. That was read off the Source Data header, where the column is named most_recorded_trade_use, and off the wrong artefact: the panel is built in the script, which references it explicitly at 'Panel C: Trade purpose categories'.

1. Data inputs derived

Computed from the figure pipeline's declared tables and query.

Database schema
arctic
Tables
species, cites_listings, iucn_assessments, cites_trade_records
Database release
CITES Trade Database v2025.1
Extraction date
13 June 2025
Redistributable
No. IUCN Red List terms do not permit redistribution. Assessment identifiers and the extraction script are deposited instead.
This figure was not generated from the deposited dataset

The figure pipeline reads schema arctic (v1). The deposit is built from arctic_v2. Row counts can differ. A reader regenerating this figure from the deposit may not reproduce the published numbers exactly.

2. Processing steps derived

Each step is a path in the figure pipeline's own repository, which this site does not host. Regenerate and verify commands are literal. 1 of the 4 artifacts below is served here, and carries a download link; the rest are named so the chain can be read, not followed.

  1. Aggregate from Postgres. visualizations/data_processing/export_cites_effectiveness_pg.py
  2. Intermediate JSON. data/raw/1_DATA_cites_effectiveness.json
  3. Render. visualizations/scripts/figure2_trade_enforcement.py
  4. Frozen numeric source data. visualizations/source_data/figure2_source_data.csv, download

Regenerate: ARCTIC_DATABASE_URL=... ./.venv/bin/python visualizations/make_all_figures.py

Verify: append --check. This regenerates the source data from the database and byte-diffs it against the frozen copy. Byte equality means the whole chain from database to figure numbers is deterministic.

3. LLM involvement: none

No generative model participated in producing this figure. The artifacts named above import only csv, json, numpy, pandas, plotly, pathlib, collections and the project's psycopg2 helper. No model API is called at any step, and there is no prompt because there is no model.

This is asserted mechanically rather than by declaration. visualizations/tests/test_no_model_calls.py reads this manifest, opens every script and generator it names, searches for model SDKs and API clients, and fails if it finds one. It covers every script and generator the manifest names.

The generative model in this project drafted 343 narrative prose sections about the 43 species. None of that prose reaches any figure, and none of it is displayed on this site: it is withheld pending expert review.

No review has begun, so there is no agreement statistic to report and no page reporting one. What can be checked is that the withholding is complete: the drafts are deposited unrendered as supplementary/species_narratives_no_citations.csv, every species page states how many of its sections are withheld, and the dataset page marks the table as unreviewed content.

4. Validation

Automated gate: passed. Byte-exact regeneration from the live database against the frozen source data.

Human review: no named person has signed this figure. withheld The automated gate establishes that the numbers are reproducible from the database. It establishes nothing about whether they are the right numbers to plot. That judgement requires a person, and no person has recorded it.

Known defects: none recorded. The automated regeneration gate passed and no defect has been recorded against this figure. That is a statement about what is known, not a guarantee that none exists.