Skip to content

charting

src.generators.committee_stats.charting

Committee chart generation (matplotlib SVG outputs).

generate_committee_charts(summary: dict, detail: dict, output_dir, inst_timeline=None) -> None

Generate SVG charts for committee statistics.

Source code in src/generators/committee_stats/charting.py
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
def generate_committee_charts(summary: dict, detail: dict, output_dir, inst_timeline=None) -> None:
    """Generate SVG charts for committee statistics."""
    charts_dir = Path(output_dir) / "assets/charts"
    charts_dir.mkdir(parents=True, exist_ok=True)

    _chart_top_countries(detail, charts_dir / "committee_countries.svg")
    _chart_top_countries(detail, charts_dir / "committee_countries_systems.svg", area="systems")
    _chart_top_countries(detail, charts_dir / "committee_countries_security.svg", area="security")
    _chart_continents(detail, charts_dir / "committee_continents.svg")
    _chart_continents(detail, charts_dir / "committee_continents_systems.svg", area="systems")
    _chart_continents(detail, charts_dir / "committee_continents_security.svg", area="security")
    _chart_top_institutions(detail, charts_dir / "committee_institutions.svg")
    _chart_top_institutions(detail, charts_dir / "committee_institutions_systems.svg", area="systems")
    _chart_top_institutions(detail, charts_dir / "committee_institutions_security.svg", area="security")
    _chart_committee_sizes(summary, charts_dir / "committee_sizes.svg")
    _chart_continent_timeline(detail, charts_dir / "committee_continent_timeline.svg")

    logger.info(f"  Committee charts generated in {charts_dir}")