matplotlib 尽管有坐标转换,但字幕和标题仍然没有对齐

rjzwgtxy  于 2023-05-23  发布在  其他
关注(0)|答案(1)|浏览(173)

我的误解是什么?
我知道有些地方出了问题,不仅是因为错位,还因为当我使用ax.set_ylabel('x\ny\nz')时,x没有改变:x始终等于0.5125 aka 41/80。

import matplotlib.pyplot as plt

fig, ax = plt.subplots(layout='constrained')
ax.set_ylim((0, 10))
ax.set_ylabel('y')
ad = ax.transAxes.transform               # axes => display
df = fig.transFigure.inverted().transform # display => figure
x = df(ad((0.5, 1)))[0]
print(x)
ax.set_title('A')
fig.suptitle('A', x=x)
plt.show()

vojdkbi0

vojdkbi01#

set_ylabel调整相对于图形的轴位置,但仅在第一次绘制之后。如果在计算变换之前强制绘制,则所有内容都将被检出。

import matplotlib.pyplot as plt

fig, ax = plt.subplots(layout='constrained')
ax.set_ylim((0, 10))
ax.set_ylabel('y')
# --------------------
fig.canvas.draw()
# --------------------
ad = ax.transAxes.transform               # axes => display
df = fig.transFigure.inverted().transform # display => figure
x = df(ad((0.5, 1)))[0]
print(x)
ax.set_title('A')
fig.suptitle('A', x=x)
plt.show()

相关问题