Current ncd data of following diseases hypertension, diabetes, obesity and cancer . Show in graph form.
global NCD noncommunicable disease statistics 2024 2025 hypertension diabetes obesity cancer prevalence data
WHO global hypertension diabetes obesity cancer numbers 2024 latest data
https://www.who.int/news-room/fact-sheets/detail/noncommunic…
mkdir -p /home/daytona/workspace/ncd-charts && python3 << 'EOF' import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt import matplotlib.patches as mpatches import numpy as np # ── Data (latest WHO / GBD 2021 / IDF 2025 figures) ──────────────────────── diseases = ['Hypertension', 'Diabetes', 'Obesity\n(Adults)', 'Cancer'] # Affected people globally (millions) affected_millions = [1300, 537, 890, 510] # IDF 2025 diabetes ~537 M; WHO HTN ~1.3 B; WHO obesity ~890M; IARC ~20M new cases/yr but 50M living with cancer approx # Annual deaths (millions) – WHO / GBD 2021 deaths_millions = [10.8, 2.0, 5.0, 10.0] # HTN-linked ~10.8M; DM ~2M+; Obesity-related ~5M; Cancer ~10M # % of global NCD deaths ncd_pct = [25, 5, 12, 23] # HTN 25% NCD deaths; Diabetes ~5%; Obesity 12% (attributable); Cancer 23% # DALYs (millions) dalys = [235, 103, 186, 250] # approximate GBD 2021 colors = ['#E74C3C', '#3498DB', '#F39C12', '#8E44AD'] bar_edge = 'white' fig = plt.figure(figsize=(18, 14), facecolor='#0D1117') fig.suptitle('Global NCD Burden | Hypertension · Diabetes · Obesity · Cancer\n' 'Source: WHO, GBD 2021, IDF 2025, IARC (latest available data)', fontsize=15, color='white', fontweight='bold', y=0.98) ax_style = dict(facecolor='#161B22', tick_params=dict(colors='#C9D1D9'), spine_color='#30363D') def style_ax(ax, title): ax.set_facecolor('#161B22') ax.set_title(title, color='white', fontsize=12, fontweight='bold', pad=10) ax.tick_params(colors='#C9D1D9', labelsize=9) for spine in ax.spines.values(): spine.set_edgecolor('#30363D') ax.yaxis.label.set_color('#C9D1D9') ax.xaxis.label.set_color('#C9D1D9') ax.grid(axis='y', color='#21262D', linewidth=0.8, linestyle='--') ax.set_axisbelow(True) # ── 1. Bar chart – People affected (millions) ────────────────────────────── ax1 = fig.add_subplot(2, 3, 1) bars = ax1.bar(diseases, affected_millions, color=colors, edgecolor=bar_edge, linewidth=0.6, width=0.55) style_ax(ax1, '① People Affected (Millions)') ax1.set_ylabel('Millions') for bar, val in zip(bars, affected_millions): ax1.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 20, f'{val:,}M', ha='center', va='bottom', color='white', fontsize=9, fontweight='bold') ax1.set_ylim(0, 1600) ax1.set_xticklabels(['Hypertension', 'Diabetes', 'Obesity\n(Adults)', 'Cancer'], color='#C9D1D9', fontsize=8.5) # ── 2. Bar chart – Annual deaths ────────────────────────────────────────── ax2 = fig.add_subplot(2, 3, 2) bars2 = ax2.bar(diseases, deaths_millions, color=colors, edgecolor=bar_edge, linewidth=0.6, width=0.55) style_ax(ax2, '② Annual Attributable Deaths (Millions)') ax2.set_ylabel('Millions') for bar, val in zip(bars2, deaths_millions): ax2.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 0.1, f'{val}M', ha='center', va='bottom', color='white', fontsize=9, fontweight='bold') ax2.set_ylim(0, 14) ax2.set_xticklabels(['Hypertension', 'Diabetes', 'Obesity\n(Adults)', 'Cancer'], color='#C9D1D9', fontsize=8.5) # ── 3. Pie chart – % of NCD deaths ────────────────────────────────────── ax3 = fig.add_subplot(2, 3, 3) ax3.set_facecolor('#161B22') other = 100 - sum(ncd_pct) pie_vals = ncd_pct + [other] pie_labels = ['Hypertension\n25%', 'Diabetes\n5%', 'Obesity\n12%', 'Cancer\n23%', 'Other NCDs\n35%'] pie_colors = colors + ['#586069'] wedges, texts = ax3.pie(pie_vals, labels=pie_labels, colors=pie_colors, startangle=90, wedgeprops=dict(edgecolor='#0D1117', linewidth=1.5), textprops=dict(color='white', fontsize=8.5)) ax3.set_title('③ Share of Global NCD Deaths (%)', color='white', fontsize=12, fontweight='bold', pad=10) # ── 4. Horizontal bar – DALYs ───────────────────────────────────────────── ax4 = fig.add_subplot(2, 3, 4) ax4.set_facecolor('#161B22') y_pos = np.arange(len(diseases)) hbars = ax4.barh(y_pos, dalys, color=colors, edgecolor=bar_edge, linewidth=0.6, height=0.5) ax4.set_yticks(y_pos) ax4.set_yticklabels(['Hypertension', 'Diabetes', 'Obesity', 'Cancer'], color='#C9D1D9', fontsize=9) ax4.set_xlabel('DALYs (Millions)', color='#C9D1D9') style_ax(ax4, '④ Disability-Adjusted Life Years – DALYs (Millions)') ax4.grid(axis='x', color='#21262D', linewidth=0.8, linestyle='--') ax4.grid(axis='y', visible=False) for bar, val in zip(hbars, dalys): ax4.text(val + 3, bar.get_y() + bar.get_height()/2, f'{val}M', va='center', color='white', fontsize=9, fontweight='bold') ax4.set_xlim(0, 320) # ── 5. Trend line – global obesity + diabetes (1990-2022/25) ─────────────── ax5 = fig.add_subplot(2, 3, 5) years = [1990, 1995, 2000, 2005, 2010, 2015, 2022] obesity_pct = [6, 7.5, 9, 10.5, 12.5, 14, 16] # adult obesity % diabetes_pct = [4.7, 5.0, 5.3, 5.9, 6.5, 7.5, 10.5] # adult diabetes % hyper_pct = [22, 22.5, 23, 25, 26, 26.5, 32] # adult hypertension % ax5.plot(years, hyper_pct, 'o-', color='#E74C3C', linewidth=2, markersize=5, label='Hypertension (%)') ax5.plot(years, diabetes_pct, 's-', color='#3498DB', linewidth=2, markersize=5, label='Diabetes (%)') ax5.plot(years, obesity_pct, '^-', color='#F39C12', linewidth=2, markersize=5, label='Obesity (%)') style_ax(ax5, '⑤ Adult Prevalence Trends 1990–2022 (%)') ax5.set_ylabel('Prevalence (%)') ax5.set_xlabel('Year') ax5.legend(facecolor='#21262D', edgecolor='#30363D', labelcolor='white', fontsize=8) ax5.set_ylim(0, 40) # ── 6. Stacked bar – LMIC vs HIC deaths ────────────────────────────────── ax6 = fig.add_subplot(2, 3, 6) ax6.set_facecolor('#161B22') # % of deaths occurring in LMICs vs HICs (WHO data) lmic_pct_d = [73, 80, 70, 55] hic_pct_d = [27, 20, 30, 45] x = np.arange(len(diseases)) b1 = ax6.bar(x, lmic_pct_d, color=['#C0392B','#1A5276','#B7770D','#6C3483'], label='LMICs', width=0.55, edgecolor=bar_edge) b2 = ax6.bar(x, hic_pct_d, bottom=lmic_pct_d, color=['#E8888A','#7FB3D3','#F8C471','#C39BD3'], label='HICs', width=0.55, edgecolor=bar_edge) ax6.set_xticks(x) ax6.set_xticklabels(['Hypertension', 'Diabetes', 'Obesity', 'Cancer'], color='#C9D1D9', fontsize=8.5) ax6.set_ylabel('%') style_ax(ax6, '⑥ NCD Deaths: LMICs vs HICs (%)') ax6.set_ylim(0, 115) ax6.legend(facecolor='#21262D', edgecolor='#30363D', labelcolor='white', fontsize=9) for bar, v in zip(b1, lmic_pct_d): ax6.text(bar.get_x()+bar.get_width()/2, v/2, f'{v}%', ha='center', va='center', color='white', fontsize=8, fontweight='bold') for bar, v, bot in zip(b2, hic_pct_d, lmic_pct_d): ax6.text(bar.get_x()+bar.get_width()/2, bot + v/2, f'{v}%', ha='center', va='center', color='white', fontsize=8, fontweight='bold') plt.tight_layout(rect=[0, 0, 1, 0.96]) plt.savefig('/home/daytona/workspace/ncd-charts/ncd_dashboard.png', dpi=150, bbox_inches='tight', facecolor='#0D1117') print("Saved.") EOF
ncd dashboard
Image · PNG
| Disease | People Affected |
|---|---|
| Hypertension | ~1,300 million (1.3 billion) |
| Diabetes | ~537 million adults |
| Obesity (adults) | ~890 million |
| Cancer | ~510 million (living with/after diagnosis) |
| Disease | Deaths/Year |
|---|---|
| Hypertension (linked CVD) | ~10.8 million |
| Cancer | ~10 million |
| Obesity-related | ~5 million |
| Diabetes | ~2+ million |