# Legend alignment

Hello,

Below is a MWE of a figure that includes two legends, one in two-column format and the other in one-column format. As written, the horizontal alignment between the two legends depends on details such as whether I generate the figure in a Jupyter notebook or with a script. I’ve experimented with transformations and have been unable to find a solution that robustly centers the legend keys of the single-column legend at the horizontal center of the two legend keys in the two-column legend. Any suggestions?

``````fig, ax = plt.subplots()

x = np.linspace(0, 1)
m = np.arange(1, 4)
lgnd_loc = (0.1, 0.1)
lbl = []
ln_pos = []
ln_neg = []
for k in m:
ln_pos += ax.plot(x, k * x)
ln_neg += ax.plot(x, -k * x)
lbl.append(f"m = {k:d}")
ln_zero = ax.plot(x, np.zeros_like(x), label=f"m = 0")

# Create first part of the legend
lgnd_2col = ax.legend(
title="Pos.   Neg.",
alignment="left",
handles=[*zip(ln_pos, ln_neg)],
labels=lbl,
frameon=False,
fontsize="small",
handlelength=6.0,
loc="lower left",
bbox_to_anchor=lgnd_loc,
)

# Add first part of legend as an artist to create second part

# Create second part of the legend
lgnd_loc_new = (lgnd_loc[0] - ax.transAxes.inverted().transform((60, 0))[0], lgnd_loc[1])
lgnd_1col = ax.legend(
alignment="center",
handles=ln_zero,
ncols=1,
frameon=False,
fontsize="medium",
loc="upper left",
bbox_to_anchor=lgnd_loc_new,