PyCharm中的matplotlib.pyplot.show()移动了我的轴!我该如何预防?

时间:2019-04-17 14:44:16

标签: python matplotlib pycharm

当我在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)

1 个答案:

答案 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科学”>取消选中“显示图”)可以解决此问题。