1

Ajoute les visualisations des couleurs de têtes de minifigs et jalons

This commit is contained in:
2025-12-01 23:41:32 +01:00
parent 7fe02ea263
commit d7b4ad8031
9 changed files with 521 additions and 1 deletions

View File

@@ -0,0 +1,35 @@
"""Analyse des couleurs de têtes de minifigs."""
from pathlib import Path
from lib.rebrickable.colors_by_set import build_colors_lookup
from lib.rebrickable.minifig_heads import (
aggregate_head_colors_by_set,
aggregate_head_colors_by_year,
build_head_part_set,
load_parts_filtered,
write_head_colors_by_set,
write_head_colors_by_year,
)
PARTS_FILTERED_PATH = Path("data/intermediate/parts_filtered.csv")
PARTS_CATALOG_PATH = Path("data/raw/parts.csv")
COLORS_PATH = Path("data/raw/colors.csv")
HEADS_BY_SET_PATH = Path("data/intermediate/minifig_heads_by_set.csv")
HEADS_BY_YEAR_PATH = Path("data/intermediate/minifig_heads_by_year.csv")
def main() -> None:
"""Construit les agrégats des couleurs de têtes."""
parts_rows = load_parts_filtered(PARTS_FILTERED_PATH)
head_parts = build_head_part_set(PARTS_CATALOG_PATH)
colors_lookup = build_colors_lookup(COLORS_PATH)
heads_by_set = aggregate_head_colors_by_set(parts_rows, head_parts, colors_lookup)
heads_by_year = aggregate_head_colors_by_year(heads_by_set)
write_head_colors_by_set(HEADS_BY_SET_PATH, heads_by_set)
write_head_colors_by_year(HEADS_BY_YEAR_PATH, heads_by_year)
if __name__ == "__main__":
main()

View File

@@ -11,7 +11,8 @@ FILES_TO_DOWNLOAD = [
"parts.csv.gz",
"colors.csv.gz",
"inventory_minifigs.csv.gz",
"minifigs.csv.gz"
"minifigs.csv.gz",
"part_categories.csv.gz",
]
DESTINATION_DIR = Path("data/raw")

View File

@@ -0,0 +1,21 @@
"""Visualisations des couleurs de têtes de minifigs."""
from pathlib import Path
from lib.plots.minifig_heads import plot_global_shares, plot_shares_by_year
HEADS_BY_YEAR_PATH = Path("data/intermediate/minifig_heads_by_year.csv")
MILESTONES_PATH = Path("config/milestones.csv")
SHARES_DESTINATION = Path("figures/step16/minifig_heads_shares.png")
GLOBAL_DESTINATION = Path("figures/step16/minifig_heads_global.png")
def main() -> None:
"""Construit les visuels des couleurs de têtes de minifigs."""
plot_shares_by_year(HEADS_BY_YEAR_PATH, SHARES_DESTINATION, milestones_path=MILESTONES_PATH)
plot_global_shares(HEADS_BY_YEAR_PATH, GLOBAL_DESTINATION)
if __name__ == "__main__":
main()