#
Case № 2026 Top Secret

The price of
Truth

Report on threats to freedom of speech.
Analysis of journalists who were killed or imprisoned while performing their professional duties.

Introduction

Journalism is not just a profession, it is the foundation of a free society. However, CPJ data shows a worrying trend: eliminating journalists has stopped being a "side effect" of military conflicts.

Today it is a censorship tool. Mercenaries, criminal cartels and government structures use violence to silence voices investigating corruption and crimes.

Project aim:

To explore the "anatomy of silence" through analysis of CPJ data on journalists killed/imprisoned. The aim is to identify patterns between reporting topics, violence and impunity in order to determine the real price of truth in different regions of the world.

/// CASE INVENTORY ///

Methodology & Investigation Details

01. Data Sources

Committee to Protect Journalists (CPJ)

https://cpj.org/data/

The primary dataset providing verified evidentiary records of journalists who were killed or imprisoned in direct relation to their professional duties. This source provides the granular metrics—including country of incident, motive, and case status—used to build our core visualizations.

Freedom House – Freedom in the World

https://freedomhouse.org/report/freedom-world

Supplementary data utilized for contextual background on global press freedom and political stability. This serves as the qualitative framework for our narrative arc, helping to identify correlations between declining civil liberties and the rising "price of truth" in specific regimes.

02. Cleaning & Processing

The preprocessing pipeline was executed via Python (Pandas) to transform raw reports into structured visualization data:

  • Data Synthesis: Merged 'Killed' and 'Imprisoned' CSV files, introducing a case_status tag to distinguish incident types.
  • Temporal Alignment: Extracted years from raw date strings and filtered the scope to a consistent 2010–2024 window.
  • Schema Standardization: Renamed inconsistent headers and stripped trailing whitespaces from categorical text fields for clean D3.js binding.
  • Feature Engineering: Normalized employment roles into 'Staff' and 'Freelance' categories using conditional logic.
  • Aggregated Slicing: Generated specific CSV exports for D3.js, including country-year counts for maps and individual case logs for beeswarm distributions.

03. Visual Encodings

Data metrics are mapped to visual channels using the following logic:

  • Color Saturation: Threat intensity in choropleth maps.
  • Spatial Position: Chronological progression on the X-axis for all timelines.
  • Area/Size: Magnitude of incidents in bubble charts and hierarchical importance in treemaps.
  • Clustering: Density of individual incidents in beeswarm charts to represent volume.

04. Limitations & Uncertainty

Underreporting: Data includes only confirmed cases. In countries with strict censorship, actual figures may differ.

Confirmation Bias: We retained the division between “Confirmed” and “Unconfirmed” motives to reflect the degree of uncertainty in investigations.

Temporal Scope: Recent data spikes are linked to active regional conflicts, which imposes limitations on long-term forecasting.

Project Team

  • Maryam Bagherirad Data Analysis & Narrative Lead
  • Yaugeniya Andreyeva Frontend Developer & UI Designer
Next Step Block 01: GEO INTEL