当我在matplot lib中创建一个图形并使用matplotlib.pyplot.show()在PyCharm中渲染该图形时,图形就会移动!
在PyCharm之外的show()中不会发生这种情况。
import matplotlib.pyplot as plt
def axes_position_test():
"""Witness change in position after plt.show()."""
fig = plt.figure()
ax1 = fig.add_subplot(111)
# original position
print(ax1.get_position())
plt.show()
# position has changed
print(ax1.get_position())
axes_position_test()
# output
# Bbox(x0=0.125, y0=0.10999999999999999, x1=0.9, y1=0.88)
# Bbox(x0=0.07300347222222223, y0=0.08067129629629632, x1=0.959375, y1=0.9572916666666668)
答案 0 :(得分:1)
我无法重现该问题-代码导致我运行matplotlib 3.0.2时出错。也许正在使用其他版本?
无论如何,通常要回答这个问题:
位置可能会随时间变化,特别是如果图形显示在GUI中,图形本身可能会(略微)更改图形大小。
关于最终目标的问题尚不十分清楚,但正如我所解释的那样,目标是使两个轴相互重叠。这很容易通过
完成fig = plt.figure()
ax1 = fig.add_subplot(111, label="first axes")
ax2 = fig.add_subplot(111, label="second axes")
可以使用gridspec
来制作更复杂的几何图形,始终使用add_subplot
来添加子图。
从OP中编辑:正如评论中所揭示的,PyCharm渲染器interagg是问题所在。禁用interagg(“设置”>“工具”>“ Python科学”>取消选中“显示图”)可以解决此问题。