1

Trier les heatmaps de couleurs par teinte

This commit is contained in:
Richard Dern 2025-12-03 15:05:51 +01:00
parent b0b5202ed4
commit ed3e4354ec

View File

@ -7,6 +7,7 @@ import matplotlib.pyplot as plt
import numpy as np import numpy as np
from lib.filesystem import ensure_parent_dir from lib.filesystem import ensure_parent_dir
from lib.color_sort import sort_hex_colors_lab
from lib.milestones import load_milestones from lib.milestones import load_milestones
from lib.rebrickable.stats import read_rows from lib.rebrickable.stats import read_rows
@ -86,9 +87,11 @@ def build_heatmap_data(rows: Iterable[dict]) -> Tuple[List[int], List[str], np.n
for row in rows: for row in rows:
key = (row["color_name"], row["color_rgb"], row["is_translucent"]) key = (row["color_name"], row["color_rgb"], row["is_translucent"])
color_totals[key] = color_totals.get(key, 0) + int(row["quantity_total"]) color_totals[key] = color_totals.get(key, 0) + int(row["quantity_total"])
ordered_hex = sort_hex_colors_lab({color_rgb for _, color_rgb, _ in color_totals.keys()})
hex_rank = {hex_value: index for index, hex_value in enumerate(ordered_hex)}
sorted_colors = sorted( sorted_colors = sorted(
color_totals.items(), color_totals.items(),
key=lambda item: (-item[1], item[0][0], item[0][1]), key=lambda item: (hex_rank[item[0][1]], item[0][2], item[0][0]),
) )
color_keys = [color for color, _ in sorted_colors] color_keys = [color for color, _ in sorted_colors]
labels = [f"{name} ({'trans' if is_trans == 'true' else 'opaque'})" for name, _, is_trans in color_keys] labels = [f"{name} ({'trans' if is_trans == 'true' else 'opaque'})" for name, _, is_trans in color_keys]