{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "imports",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from pyprojroot import here"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "load",
   "metadata": {},
   "outputs": [],
   "source": [
    "data = pd.read_csv(here() / 'data/base/data.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "plot",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Calculate mean Bell parameter by country\n",
    "country_stats = data.groupby('Country').agg({\n",
    "    'Bell Parameter (S)': 'mean',\n",
    "    'Study ID': 'count'\n",
    "}).rename(columns={'Study ID': 'Count'}).sort_values('Bell Parameter (S)', ascending=False)\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(14, 8))\n",
    "\n",
    "# Horizontal bar chart\n",
    "countries = country_stats.index[:20]  # Top 20\n",
    "values = country_stats['Bell Parameter (S)'][:20]\n",
    "counts = country_stats['Count'][:20]\n",
    "\n",
    "bars = ax.barh(range(len(countries)), values, color='steelblue', edgecolor='black')\n",
    "\n",
    "# Color bars by value\n",
    "for i, (bar, val) in enumerate(zip(bars, values)):\n",
    "    if val > 2.8:\n",
    "        bar.set_color('#27ae60')\n",
    "    elif val > 2.7:\n",
    "        bar.set_color('#3498db')\n",
    "    else:\n",
    "        bar.set_color('#e67e22')\n",
    "\n",
    "# Add classical limit line\n",
    "ax.axvline(x=2.0, color='red', linestyle='--', linewidth=2, alpha=0.7, label='Classical limit')\n",
    "\n",
    "# Add counts as text\n",
    "for i, (val, count) in enumerate(zip(values, counts)):\n",
    "    ax.text(val + 0.01, i, f'n={int(count)}', va='center', fontsize=9)\n",
    "\n",
    "ax.set_yticks(range(len(countries)))\n",
    "ax.set_yticklabels(countries)\n",
    "ax.set_xlabel('Mean Bell Parameter (S)', fontsize=12)\n",
    "ax.set_title('Mean Bell Parameter by Country (Top 20)', fontsize=14)\n",
    "ax.legend()\n",
    "ax.grid(True, alpha=0.3, axis='x')\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.savefig(here() / 'output/plots/world_map.png', dpi=300, bbox_inches='tight')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
