jupyter笔记本matplotlib图框意外更改大小

时间:2018-09-19 22:50:06

标签: python matplotlib jupyter-notebook

我正在尝试让jupyter笔记本在for循环中显示绘图的进度。该代码有效,但是由于某些原因,在for循环完成后,图形的大小也会更改。这是一组最小的代码来说明这一点(在jupyter笔记本中)

import numpy as np
import matplotlib
import matplotlib.pyplot as plt


%matplotlib notebook

for i in range(10):
    plt.gca().scatter(np.random.rand(10),
                      np.random.rand(10))
    plt.gcf().canvas.draw()
    plt.gcf().canvas.flush_events()
    plt.pause(0.5)

随附说明该问题的gif。这个问题一直使我发疯,更改边距或使用ight_layouts()都无济于事。它似乎与FigureFrame对象的呈现方式有关。 gif感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

在这里发挥matplotlib.animation的优势。在开始动画之前,将确保已完全绘制图形。

%matplotlib notebook
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation


def animate(i):
    plt.gca().scatter(np.random.rand(10),
                      np.random.rand(10))

ani = FuncAnimation(plt.gcf(), animate, frames=10, interval=500)
plt.show()