diag(#40): fix 3x2 plot -- keep bottom spine at axis edge (tick labels collided with rugs), skip labels on narrow zones

Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
This commit is contained in:
wassname
2026-06-11 10:47:57 +00:00
parent 4be1858b14
commit bbf6a97151
+10 -7
View File
@@ -280,11 +280,13 @@ def plot_q2(df: pl.DataFrame, k_mid: float, k_rout: float, subtitle: str, out_pn
ax.plot(grid, yk, color=c, lw=lw, ls=ls)
ymax *= 1.18
# rug of the ACTUAL live points (KDEs of n~20 are smooth fiction; the rout-tail
# precision claim rests on a handful of rollouts -- show them). hack row on top.
# precision claim rests on a handful of rollouts -- show them). hack row on top,
# in a strip below y=0 (faint separator line); tick labels stay outside the axes.
ax.axhline(0, color="#cccccc", lw=0.6, zorder=0)
for row, (p, c) in enumerate((("on_hackpos", HACK), ("on_fail", FAIL), ("on_solve", SOLVE))):
x = pops[p][col].to_numpy()
ax.plot(x, np.full(len(x), -(0.035 + 0.035 * row) * ymax), "|",
color=c, ms=4, alpha=0.6, mew=0.8, clip_on=False)
color=c, ms=4, alpha=0.6, mew=0.8)
# three zones: keep | absorb | rout
ax.axvspan(t_lo, min(t_hi, hi), color=ABSORB_C, alpha=0.08, lw=0)
@@ -292,17 +294,18 @@ def plot_q2(df: pl.DataFrame, k_mid: float, k_rout: float, subtitle: str, out_pn
ax.axvline(t_lo, color=ABSORB_C, lw=1.2, ls="--")
ax.axvline(t_hi, color=ROUT_C, lw=1.2, ls="--")
ax.axvline(oracle, color=ORACLE, lw=1.3, ls="-.")
for xz, lab in ((min(t_lo, hi) - 0.02 * (hi - lo), "keep"),
((t_lo + min(t_hi, hi)) / 2, "absorb"),
((min(t_hi, hi) + hi) / 2, "rout")):
if lo < xz < hi:
# zone labels, skipping any whose zone is too narrow on this axis to label legibly
min_w = 0.05 * (hi - lo)
for xz, lab, w in ((min(t_lo, hi) - 0.04 * (hi - lo), "keep", min(t_lo, hi) - lo),
((t_lo + min(t_hi, hi)) / 2, "absorb", min(t_hi, hi) - t_lo),
((min(t_hi, hi) + hi) / 2, "rout", hi - min(t_hi, hi))):
if lo < xz < hi and w > min_w:
ax.text(xz, ymax * 0.97, lab, ha="center", va="top", fontsize=7.5, color="#555555")
ax.set_xlim(lo, hi)
ax.set_ylim(-0.13 * ymax, ymax) # negative strip hosts the rugs
ax.set_yticks([]) # KDE density units are meaningless ink
for sp in ("top", "right", "left"):
ax.spines[sp].set_visible(False)
ax.spines["bottom"].set_position(("data", 0))
ax.set_title(f"{rep} · {kind} AUROC={auroc_pos:.2f} (A>0 contrast; vs-all {auroc:.2f}) "
f"P@rout={prec:.2f} (n={n_rout}) R={rec:.2f}", fontsize=9)
ax.set_xlabel({"cos": "cosine to v (concat modules)",