From a5256aaa624a84793e4d8c9a7493479c34e0a0b5 Mon Sep 17 00:00:00 2001 From: smgr Date: Fri, 16 Jan 2026 16:34:00 -0800 Subject: [PATCH] clean up plotting method signatures --- images/release/1.5.1/palette.png | Bin 40234 -> 33474 bytes monobiome/plotting.py | 31 ++++++------------------------- scripts/plots.py | 4 ++-- 3 files changed, 8 insertions(+), 27 deletions(-) diff --git a/images/release/1.5.1/palette.png b/images/release/1.5.1/palette.png index a95e3d87e112ac3db924578f5a1f971605b9f7fd..9a79c13bf5b22e2593c3afe47a29f13de4972f92 100644 GIT binary patch literal 33474 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 I!R+XN0RkrkumAu6 literal 40234 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 tuple[plt.Figure, plt.Axes]: return fig, axes - def plot_hue_chroma_star() -> tuple[plt.Figure, plt.Axes]: fig, ax = plt.subplots(1, 1, figsize=(8, 6)) - # uncomment to preview 5 core term colors colors = accent_h_map.keys() - #colors = set(["red", "orange", "yellow", "green", "blue"]) + # uncomment to preview just the 5 core term colors + # colors = set(["red", "orange", "yellow", "green", "blue"]) for h_str, _ in max_Cstar_Horder: Lpoints_Cstar = Lpoints_Cstar_Hmap[h_str] @@ -91,20 +90,6 @@ def plot_hue_chroma_star() -> tuple[plt.Figure, plt.Axes]: Color('oklch', [_l/100, _c, _h]).convert("srgb") for _l, _c in zip(L_points, Lpoints_Cstar, strict=True) ] - - # # ax.fill_between( - # ax.scatter( - # L_points, - # Lpoints_Cstar, - # alpha=0.7, - # c=h_colors, - # #alpha=0.2, - # #color='grey', - # label=h_str - # ) - # x, y = L_points, Lpoints_Cstar_Hmap[h_str] - # n = int(0.45*len(x)) - # ax.text(x[n], y[n]-0.01, h_str, rotation=10, va='center', ha='left') x = np.asarray(L_points) y = np.asarray(Lpoints_Cstar) @@ -112,10 +97,10 @@ def plot_hue_chroma_star() -> tuple[plt.Figure, plt.Axes]: segs = np.concatenate([pts[:-1], pts[1:]], axis=1) rgb = np.asarray(h_colors) seg_colors = (rgb[:-1] + rgb[1:]) / 2 - lc = LineCollection(segs, colors=seg_colors, linewidth=3, capstyle="round", joinstyle="round", label=h_str) + ax.add_collection(lc) ax.autoscale_view() @@ -126,12 +111,11 @@ def plot_hue_chroma_star() -> tuple[plt.Figure, plt.Axes]: return fig, ax - def palette_image( palette: dict[str, dict[int, str]], cell_size: int = 40, keys: list[str] | None = None -) -> tuple[np.ndarray, list[str], list[list[int]], int, int]: +) -> tuple[np.ndarray, list[str], list[list[int]]]: names = list(palette.keys()) if keys is None else keys row_count = len(names) @@ -155,8 +139,7 @@ def palette_image( c0, c1 = c * cell_size, (c + 1) * cell_size img[r0:r1, c0:c1, :] = rgb - return img, names, lightness_keys_per_row, cell_size, max_cols - + return img, names, lightness_keys_per_row def show_palette( palette: dict[str, dict[int, str]], @@ -165,9 +148,7 @@ def show_palette( show_labels: bool = True, dpi: int = 100, ) -> tuple[plt.Figure, plt.Axes]: - img, names, keys, cell_size, max_cols = palette_image( - palette, cell_size, keys=keys - ) + img, names, _ = palette_image(palette, cell_size, keys=keys) fig_w = img.shape[1] / 100 fig_h = img.shape[0] / 100 diff --git a/scripts/plots.py b/scripts/plots.py index dceddb4..a2e3532 100644 --- a/scripts/plots.py +++ b/scripts/plots.py @@ -17,8 +17,8 @@ fig.savefig(Path(figure_dir, "chroma-curves.png")) # "oklch" causes some slight hex drift when later using an eyedropper hlc_map = compute_hlc_map("hex") # ("oklch") -fig, ax = plotting.show_palette(hlc_map) -fig.savefig(Path(figure_dir, "palette.png")) +fig, ax = plotting.show_palette(hlc_map, cell_size=25) +fig.savefig(Path(figure_dir, "palette.png"), pad_inches=0) fig, ax = plotting.show_palette(hlc_map, show_labels=False) fig.savefig(Path(figure_dir, "palette-bare.png"), pad_inches=0)