From 25727afb5e43df03ead9fd8c04e2ca8b73fc4634 Mon Sep 17 00:00:00 2001 From: KiHoLee Date: Mon, 17 Aug 2026 14:03:46 +0900 Subject: [PATCH] fig_floor: framed in-axes legend, shared geometry restored --- code/replot_all.py | 16 +++++----------- fig/fig_floor.pdf | Bin 44582 -> 44771 bytes 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/code/replot_all.py b/code/replot_all.py index 2df1773..3ffce1b 100644 --- a/code/replot_all.py +++ b/code/replot_all.py @@ -81,9 +81,9 @@ def fig_floor(): ax.set_xlabel("Per-block SNR $\\rho$ [dB]") ax.set_ylabel(r"Per-user MSE $\mathbb{E}\|\hat{\mathbf{e}}_u-\mathbf{e}_u\|_2^2$") ax.set_xlim(0, 40); ax.set_ylim(0.4, 1.05) - # one-row legend fully OUTSIDE the axes, flush to the top-right: - # composite handles (marker = Monte Carlo, line = Theorem 1; the - # convention is stated in the caption), so three entries fit one row + # framed in-axes legend like every other result figure; composite + # handles (marker = Monte Carlo, line = Theorem 1; the convention + # is stated in the caption) keep it to three entries handles = [ Line2D([], [], color="C0", marker="o", mfc="none", ms=3.5, ls="-", label="$d=256$"), @@ -91,14 +91,8 @@ def fig_floor(): ls="-", label="$d=768$"), Line2D([], [], color="C1", ls="--", lw=1.2, label=LBL["blind"]), ] - ax.legend(handles=handles, loc="lower right", - bbox_to_anchor=(1.0, 1.0), ncol=3, frameon=False, - columnspacing=1.0, handlelength=1.8, borderaxespad=0.0, - handletextpad=0.5) - fig.subplots_adjust(left=0.205, right=0.965, top=0.90, bottom=0.185) - fig.savefig(FIG / "fig_floor.pdf") - plt.close(fig) - print("[OK] wrote fig_floor.pdf") + ax.legend(handles=handles, loc="upper right") + save(fig, "fig_floor") # ------------------------------------------------ fig_rate_corrected diff --git a/fig/fig_floor.pdf b/fig/fig_floor.pdf index d915bdd0a3451f8829a46ed7b83b77473e845363..6f1153e163917d07a21d017fafade05f2a49c466 100644 GIT binary patch delta 4513 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 y31A=w3vgJ(ufEvd(n2V`)2n3g`te&Yp*Z%