Spaces:
Sleeping
Sleeping
| from __future__ import annotations | |
| import numpy as np | |
| import matplotlib as mpl | |
| import matplotlib.pyplot as plt | |
| mpl.rcParams.update({ | |
| "pdf.fonttype": 42, | |
| "ps.fonttype": 42, | |
| "figure.dpi": 170, | |
| "savefig.dpi": 240, | |
| "font.family": "DejaVu Sans", | |
| "font.size": 8.2, | |
| "axes.titlesize": 9.6, | |
| "axes.labelsize": 8.4, | |
| "xtick.labelsize": 7.2, | |
| "ytick.labelsize": 7.2, | |
| "legend.fontsize": 7.2, | |
| "axes.linewidth": 0.75, | |
| }) | |
| COL_INK = "#172033" | |
| COL_MUTED = "#667085" | |
| COL_GRID = "#d9dee7" | |
| COL_BLUE = "#356ca5" | |
| COL_TEAL = "#2f9c95" | |
| COL_ORANGE = "#d8863b" | |
| COL_RED = "#c75756" | |
| COL_PURPLE = "#8066a8" | |
| COL_GREEN = "#5f9b68" | |
| def polish_axes(ax, grid_axis="y"): | |
| ax.spines["top"].set_visible(False) | |
| ax.spines["right"].set_visible(False) | |
| ax.spines["left"].set_color("#303642") | |
| ax.spines["bottom"].set_color("#303642") | |
| ax.tick_params(length=0, colors=COL_MUTED, pad=3) | |
| if grid_axis: | |
| ax.grid(True, axis=grid_axis, color=COL_GRID, linewidth=0.55, alpha=0.85) | |
| ax.set_axisbelow(True) | |
| def save(fig): | |
| fig.savefig("augmented.png", bbox_inches="tight", facecolor="white") | |
| fig.savefig("augmented.pdf", bbox_inches="tight", facecolor="white") | |
| import pandas as pd | |
| # DATA SECTOR: same countries, 2024 values, region map, derived avg share, and growth rate as original.py. | |
| countries = ["South Africa", "Thailand", "Venezuela", "Chile", "Argentina", "Nigeria", "India", "Kenya", "Bangladesh (SA)", "Ethiopia", "Ghana", "Uganda", "Mozambique", "Rwanda", "Eritrea", "Tanzania", "Zambia", "Namibia", "Botswana", "Peru", "Colombia"] | |
| base_2024 = [17.1, 57.7, 37.8, 31.3, 25.3, 44.8, 22.9, 28.4, 34.0, 31.4, 27.3, 27.8, 31.4, 32.9, 29.3, 20.8, 25.5, 22.3, 18.8, 30.2, 28.5] | |
| region_map = {"South Africa": "Sub-Saharan Africa", "Nigeria": "Sub-Saharan Africa", "Kenya": "Sub-Saharan Africa", "Ethiopia": "Sub-Saharan Africa", "Ghana": "Sub-Saharan Africa", "Uganda": "Sub-Saharan Africa", "Mozambique": "Sub-Saharan Africa", "Rwanda": "Sub-Saharan Africa", "Eritrea": "Sub-Saharan Africa", "Tanzania": "Sub-Saharan Africa", "Zambia": "Sub-Saharan Africa", "Namibia": "Sub-Saharan Africa", "Botswana": "Sub-Saharan Africa", "India": "South Asia", "Bangladesh (SA)": "South Asia", "Thailand": "South Asia", "Venezuela": "Latin America", "Chile": "Latin America", "Argentina": "Latin America", "Peru": "Latin America", "Colombia": "Latin America"} | |
| records = [] | |
| for country, v2024 in zip(countries, base_2024): | |
| v2022 = round(v2024 - 1.5, 1) | |
| v2023 = round(v2024 - 0.5, 1) | |
| avg_share = round((v2022 + v2023 + v2024) / 3, 2) | |
| growth_rate = round((v2024 - v2022) / v2022 * 100, 2) | |
| records.append({"Country": country, "Region": region_map[country], "AvgShare": avg_share, "GrowthRate": growth_rate}) | |
| df = pd.DataFrame(records).sort_values("AvgShare", ascending=False) | |
| region_colors = {"Sub-Saharan Africa": COL_BLUE, "South Asia": COL_TEAL, "Latin America": COL_ORANGE} | |
| fig, ax1 = plt.subplots(figsize=(7.6, 3.9)) | |
| x = np.arange(len(df)) | |
| bar_colors = [region_colors[r] for r in df["Region"]] | |
| bars = ax1.bar(x, df["AvgShare"], color=bar_colors, edgecolor="white", linewidth=0.65, width=0.72, label="Avg share") | |
| ax1.set_ylabel("Avg female employment share (%)", color=COL_BLUE) | |
| ax1.set_xticks(x, df["Country"], rotation=42, ha="right") | |
| ax1.tick_params(axis="y", labelcolor=COL_BLUE) | |
| polish_axes(ax1, "y") | |
| ax2 = ax1.twinx() | |
| ax2.plot(x, df["GrowthRate"], color=COL_RED, marker="o", markersize=3.8, linewidth=1.45, label="Growth rate") | |
| ax2.set_ylabel("Growth rate, 2022-2024 (%)", color=COL_RED) | |
| ax2.tick_params(length=0, colors=COL_RED, pad=3) | |
| ax2.spines["top"].set_visible(False) | |
| ax2.spines["right"].set_color("#303642") | |
| region_handles = [plt.Line2D([0], [0], marker="s", linestyle="", markerfacecolor=c, markeredgecolor="none", markersize=7, label=r) for r, c in region_colors.items()] | |
| line_handle = plt.Line2D([0], [0], color=COL_RED, marker="o", linewidth=1.4, markersize=4, label="Growth rate") | |
| ax1.legend(handles=region_handles + [line_handle], frameon=False, ncol=4, loc="upper left", bbox_to_anchor=(0, 1.10), columnspacing=0.9) | |
| ax1.set_title("Female vulnerable employment share and growth", loc="left", color=COL_INK, fontweight=600, pad=20) | |
| fig.subplots_adjust(left=0.08, right=0.91, bottom=0.33, top=0.83) | |
| save(fig) | |