我基本上想执行以下操作:

import matplotlib.pyplot as plt
import numpy as np

fig1, ax1 = plt.subplots()
fig2, ax2 = plt.subplots()

for i in range(10):

    ax1.scatter(i, np.sqrt(i))
    ax1.show() # something equivalent to this

    ax2.scatter(i, i**2)


也就是说,每次在ax1上绘制一个点时,都会显示一次-ax2仅显示一次。

最佳答案

您不能仅显示轴。轴始终是图形的一部分。对于动画,您需要使用交互式后端。然后在jupyter笔记本中的代码可能看起来像

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


fig1, ax1 = plt.subplots()
fig2, ax2 = plt.subplots()

frames = 10
x = np.arange(frames)
line1, = ax1.plot([],[], ls="", marker="o")
line2, = ax2.plot(x, x**2, ls="", marker="o")
ax2.set_visible(False)



def animate(i):
    line1.set_data(x[:i], np.sqrt(x[:i]))
    ax1.set_title(f"{i}")
    ax1.relim()
    ax1.autoscale_view()
    if i==frames-1:
        ax2.set_visible(True)
        fig2.canvas.draw_idle()

ani = FuncAnimation(fig1, animate, frames=frames, repeat=False)

plt.show()

关于python - 在循环的每个遍历中显示子图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59121351/

10-12 19:39