From f9e1555ecbb7a8c9d5bf0c0a27d70c5d9580dff8 Mon Sep 17 00:00:00 2001 From: Richard Dern Date: Wed, 3 Dec 2025 22:29:19 +0100 Subject: [PATCH] =?UTF-8?q?A=C3=A8re=20le=20graphique=20des=20nouveaux=20p?= =?UTF-8?q?ersonnages?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 + .../minifig_new_characters_per_year.png | Bin 0 -> 115923 bytes lib/plots/minifig_characters.py | 78 +++++++++++++++++- lib/rebrickable/minifig_characters.py | 52 ++++++++++++ scripts/plot_minifig_new_characters.py | 40 +++++++++ tests/test_minifig_characters.py | 48 +++++++++++ tests/test_minifig_characters_plot.py | 20 +++++ 7 files changed, 240 insertions(+), 1 deletion(-) create mode 100644 figures/step23/minifig_new_characters_per_year.png create mode 100644 scripts/plot_minifig_new_characters.py diff --git a/README.md b/README.md index 894ed76..1e4a70a 100644 --- a/README.md +++ b/README.md @@ -244,11 +244,14 @@ Le script relit `data/intermediate/sets_enriched.csv`, `data/intermediate/parts_ 1. `source .venv/bin/activate` 2. `python -m scripts.plot_minifig_characters` 3. `python -m scripts.plot_minifig_character_variations` +4. `python -m scripts.plot_minifig_new_characters` Le premier script lit `data/intermediate/minifigs_by_set.csv`, compte le nombre de minifigs distinctes par personnage (`known_character` + `fig_num`), écrit `data/intermediate/minifig_characters_counts.csv`, puis trace `figures/step22/minifig_characters.png` (barres horizontales triées). Les barres sont colorées en fonction du genre renseigné dans `config/known_character_genders.csv`. Le second script lit `data/intermediate/minifigs_by_set.csv`, exclut les figurants, calcule par personnage le nombre de variations (fig_num distincts) et le total réel de minifigs présentes dans les sets filtrés, sérialise `data/intermediate/minifig_character_variations_totals.csv`, puis trace `figures/step22/minifig_character_variations_totals.png` en superposant un fond neutre (total) et une jauge colorée (variations, couleur = genre). +Le troisième script lit `data/intermediate/minifigs_by_set.csv` et `data/intermediate/sets_enriched.csv`, exclut les figurants, compte les nouveaux personnages introduits chaque année entre 2015 et 2025, sérialise `data/intermediate/minifig_new_characters_by_year.csv`, puis trace `figures/step23/minifig_new_characters_per_year.png` (barres avec jalons issus de `config/milestones.csv`). + ### Étape 23 : présence annuelle des personnages 1. `source .venv/bin/activate` diff --git a/figures/step23/minifig_new_characters_per_year.png b/figures/step23/minifig_new_characters_per_year.png new file mode 100644 index 0000000000000000000000000000000000000000..11c59b170607541516e8660a7d05d85cf6e44925 GIT binary patch literal 115923 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 literal 0 HcmV?d00001 diff --git a/lib/plots/minifig_characters.py b/lib/plots/minifig_characters.py index d0c57d9..b4f86b1 100644 --- a/lib/plots/minifig_characters.py +++ b/lib/plots/minifig_characters.py @@ -1,12 +1,13 @@ """Graphique du nombre de minifigs par personnage.""" from pathlib import Path -from typing import List +from typing import Dict, List import matplotlib.pyplot as plt from matplotlib.patches import Patch from lib.filesystem import ensure_parent_dir +from lib.milestones import load_milestones from lib.plots.gender_palette import GENDER_COLORS, GENDER_LABELS from lib.rebrickable.stats import read_rows @@ -21,6 +22,11 @@ def load_presence(path: Path) -> List[dict]: return read_rows(path) +def load_new_characters(path: Path) -> List[dict]: + """Charge le CSV des personnages introduits par année.""" + return read_rows(path) + + def load_variations_and_totals(path: Path) -> List[dict]: """Charge le CSV comparatif variations/total par personnage.""" return read_rows(path) @@ -199,3 +205,73 @@ def plot_character_year_presence(presence_path: Path, destination_path: Path) -> fig.tight_layout() fig.savefig(destination_path, dpi=160) plt.close(fig) + + +def plot_new_characters_per_year( + counts_path: Path, + milestones_path: Path, + destination_path: Path, + start_year: int, + end_year: int, +) -> None: + """Trace un diagramme en barres du nombre de nouveaux personnages introduits par an.""" + rows = load_new_characters(counts_path) + if not rows: + return + counts = {int(row["year"]): int(row["new_characters"]) for row in rows} + years = list(range(start_year, end_year + 1)) + values = [counts.get(year, 0) for year in years] + + fig_width = max(8.5, len(years) * 0.45 + 2.5) + fig, ax = plt.subplots(figsize=(fig_width, 5.4)) + bars = ax.bar(years, values, color="#1f77b4", edgecolor="#0d0d0d", linewidth=0.7) + ax.set_xlabel("Année") + ax.set_ylabel("Nouveaux personnages") + ax.set_title("Personnages introduits par an (hors figurants)") + ax.grid(axis="y", linestyle="--", alpha=0.3) + ax.set_xticks(years) + ax.set_xticklabels(years, rotation=45, ha="right") + ax.set_xlim(start_year - 0.6, end_year + 0.6) + y_max = max(values) if values else 0 + upper_limit = 20 + ax.set_ylim(0, upper_limit) + + for bar, value in zip(bars, values): + if value == 0: + continue + ax.text(bar.get_x() + bar.get_width() / 2, value + 0.05, str(value), ha="center", va="bottom", fontsize=8) + + milestones = load_milestones(milestones_path) + if milestones: + milestones_in_range = sorted( + [m for m in milestones if start_year <= m["year"] <= end_year], + key=lambda m: (m["year"], m["description"]), + ) + offset_step = 0.25 + offset_map: Dict[int, int] = {} + top_limit = ax.get_ylim()[1] + label_y = top_limit * 0.96 + for milestone in milestones_in_range: + year = milestone["year"] + count_for_year = offset_map.get(year, 0) + offset_map[year] = count_for_year + 1 + horizontal_offset = offset_step * (count_for_year // 2 + 1) + if count_for_year % 2 == 1: + horizontal_offset *= -1 + text_x = year + horizontal_offset + ax.axvline(year, color="#d62728", linestyle="--", linewidth=1, alpha=0.65, zorder=1) + ax.text( + text_x, + label_y, + milestone["description"], + rotation=90, + verticalalignment="top", + horizontalalignment="center", + fontsize=8, + color="#d62728", + ) + + ensure_parent_dir(destination_path) + fig.tight_layout() + fig.savefig(destination_path, dpi=160) + plt.close(fig) diff --git a/lib/rebrickable/minifig_characters.py b/lib/rebrickable/minifig_characters.py index 843246b..03c23a3 100644 --- a/lib/rebrickable/minifig_characters.py +++ b/lib/rebrickable/minifig_characters.py @@ -69,6 +69,47 @@ def aggregate_variations_and_totals( return aggregates +def aggregate_new_characters_by_year( + minifigs_rows: Iterable[dict], + sets_years: Dict[str, str], + excluded_characters: Sequence[str] | None = None, + start_year: int | None = None, + end_year: int | None = None, +) -> List[dict]: + """Compte le nombre de personnages introduits par année sur une plage donnée.""" + excluded = set(excluded_characters or []) + first_year: Dict[str, int] = {} + for row in minifigs_rows: + character = row["known_character"].strip() + fig_num = row["fig_num"].strip() + if character == "" or fig_num == "": + continue + if character in excluded: + continue + year_str = sets_years.get(row["set_num"]) + if year_str is None: + continue + year_int = int(year_str) + current = first_year.get(character) + if current is None or year_int < current: + first_year[character] = year_int + counts: Dict[int, int] = {} + if start_year is not None and end_year is not None: + for year in range(start_year, end_year + 1): + counts[year] = 0 + for character, year_int in first_year.items(): + if start_year is not None and year_int < start_year: + continue + if end_year is not None and year_int > end_year: + continue + counts[year_int] = counts.get(year_int, 0) + 1 + years = sorted(counts.keys()) + results: List[dict] = [] + for year in years: + results.append({"year": str(year), "new_characters": str(counts[year])}) + return results + + def aggregate_by_gender(rows: Iterable[dict]) -> List[dict]: """Compte les minifigs distinctes par genre (fig_num unique).""" genders_by_fig: Dict[str, str] = {} @@ -102,6 +143,17 @@ def write_character_counts(path: Path, rows: Sequence[dict]) -> None: writer.writerow(row) +def write_new_characters_by_year(path: Path, rows: Sequence[dict]) -> None: + """Écrit le CSV des personnages introduits chaque année.""" + ensure_parent_dir(path) + fieldnames = ["year", "new_characters"] + with path.open("w", newline="") as csv_file: + writer = csv.DictWriter(csv_file, fieldnames=fieldnames) + writer.writeheader() + for row in rows: + writer.writerow(row) + + def write_gender_counts(path: Path, rows: Sequence[dict]) -> None: """Écrit le CSV des comptes par genre.""" ensure_parent_dir(path) diff --git a/scripts/plot_minifig_new_characters.py b/scripts/plot_minifig_new_characters.py new file mode 100644 index 0000000..d1933b6 --- /dev/null +++ b/scripts/plot_minifig_new_characters.py @@ -0,0 +1,40 @@ +"""Trace le nombre de nouveaux personnages introduits par an (hors figurants).""" + +from pathlib import Path + +from lib.plots.minifig_characters import plot_new_characters_per_year +from lib.rebrickable.minifig_characters import ( + aggregate_new_characters_by_year, + load_minifigs_by_set, + load_sets_enriched, + write_new_characters_by_year, +) + + +MINIFIGS_BY_SET_PATH = Path("data/intermediate/minifigs_by_set.csv") +SETS_ENRICHED_PATH = Path("data/intermediate/sets_enriched.csv") +COUNTS_PATH = Path("data/intermediate/minifig_new_characters_by_year.csv") +DESTINATION_PATH = Path("figures/step23/minifig_new_characters_per_year.png") +MILESTONES_PATH = Path("config/milestones.csv") +EXCLUDED_CHARACTERS = ["Figurant"] +START_YEAR = 2015 +END_YEAR = 2025 + + +def main() -> None: + """Construit le total de nouveaux personnages par année et trace le graphique.""" + minifigs = load_minifigs_by_set(MINIFIGS_BY_SET_PATH) + sets_years = load_sets_enriched(SETS_ENRICHED_PATH) + counts = aggregate_new_characters_by_year( + minifigs, + sets_years, + excluded_characters=EXCLUDED_CHARACTERS, + start_year=START_YEAR, + end_year=END_YEAR, + ) + write_new_characters_by_year(COUNTS_PATH, counts) + plot_new_characters_per_year(COUNTS_PATH, MILESTONES_PATH, DESTINATION_PATH, START_YEAR, END_YEAR) + + +if __name__ == "__main__": + main() diff --git a/tests/test_minifig_characters.py b/tests/test_minifig_characters.py index 4fc9140..24441ff 100644 --- a/tests/test_minifig_characters.py +++ b/tests/test_minifig_characters.py @@ -5,11 +5,13 @@ from pathlib import Path from lib.rebrickable.minifig_characters import ( aggregate_by_character, aggregate_by_gender, + aggregate_new_characters_by_year, aggregate_variations_and_totals, aggregate_character_spans, aggregate_presence_by_year, load_sets_enriched, write_character_counts, + write_new_characters_by_year, write_character_variations_totals, write_gender_counts, ) @@ -137,6 +139,39 @@ def test_aggregate_by_gender_counts_unique_figs() -> None: ] +def test_aggregate_new_characters_by_year_limits_range(tmp_path: Path) -> None: + """Compter les nouveaux personnages par année en respectant la plage.""" + sets_path = tmp_path / "sets_enriched.csv" + sets_path.write_text( + "set_num,year\n" + "123-1,2015\n" + "124-1,2016\n" + "125-1,2017\n" + "126-1,2014\n" + ) + sets_years = load_sets_enriched(sets_path) + minifigs_rows = [ + {"set_num": "123-1", "known_character": "Owen Grady", "fig_num": "fig-owen-1", "part_num": "head-a"}, + {"set_num": "124-1", "known_character": "Owen Grady", "fig_num": "fig-owen-2", "part_num": "head-b"}, + {"set_num": "125-1", "known_character": "Ellie Sattler", "fig_num": "fig-ellie-1", "part_num": "head-c"}, + {"set_num": "126-1", "known_character": "Alan Grant", "fig_num": "fig-grant-1", "part_num": "head-d"}, + ] + + counts = aggregate_new_characters_by_year( + minifigs_rows, + sets_years, + excluded_characters=["Figurant"], + start_year=2015, + end_year=2017, + ) + + assert counts == [ + {"year": "2015", "new_characters": "1"}, + {"year": "2016", "new_characters": "0"}, + {"year": "2017", "new_characters": "1"}, + ] + + def test_write_character_counts_outputs_csv(tmp_path: Path) -> None: """Écrit le CSV des comptes par personnage.""" destination = tmp_path / "counts.csv" @@ -176,6 +211,19 @@ def test_write_character_variations_totals_outputs_csv(tmp_path: Path) -> None: assert destination.read_text() == "known_character,gender,variation_count,total_minifigs\nA,male,2,3\nB,female,1,1\n" +def test_write_new_characters_by_year_outputs_csv(tmp_path: Path) -> None: + """Écrit le CSV des nouveaux personnages par année.""" + destination = tmp_path / "new_characters.csv" + rows = [ + {"year": "2015", "new_characters": "3"}, + {"year": "2016", "new_characters": "1"}, + ] + + write_new_characters_by_year(destination, rows) + + assert destination.read_text() == "year,new_characters\n2015,3\n2016,1\n" + + def test_aggregate_presence_by_year_excludes_figurants(tmp_path: Path) -> None: """Calcule le total annuel en excluant les figurants.""" sets_path = tmp_path / "sets_enriched.csv" diff --git a/tests/test_minifig_characters_plot.py b/tests/test_minifig_characters_plot.py index c11bb1a..ede23f9 100644 --- a/tests/test_minifig_characters_plot.py +++ b/tests/test_minifig_characters_plot.py @@ -4,6 +4,7 @@ import matplotlib from pathlib import Path from lib.plots.minifig_characters import plot_minifigs_per_character +from lib.plots.minifig_characters import plot_new_characters_per_year from lib.plots.minifig_characters import plot_character_variations_vs_total @@ -40,3 +41,22 @@ def test_plot_character_variations_vs_total(tmp_path: Path) -> None: assert destination.exists() assert destination.stat().st_size > 0 + + +def test_plot_new_characters_per_year(tmp_path: Path) -> None: + """Génère l'image du nombre de nouveaux personnages par an.""" + counts_path = tmp_path / "new_characters.csv" + destination = tmp_path / "figures" / "step23" / "minifig_new_characters_per_year.png" + milestones_path = tmp_path / "milestones.csv" + counts_path.write_text( + "year,new_characters\n" + "2015,2\n" + "2016,0\n" + "2017,1\n" + ) + milestones_path.write_text("year,description\n2016,Spin-off\n") + + plot_new_characters_per_year(counts_path, milestones_path, destination, start_year=2015, end_year=2017) + + assert destination.exists() + assert destination.stat().st_size > 0