我实质上想执行以下操作:
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仅显示一次。
答案 0 :(得分:0)
您不能仅显示轴。轴始终是图形的一部分。对于动画,您需要使用交互式后端。然后,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()
答案 1 :(得分:0)
如果您想动态更改图,建议您不要每次都重新绘制整个图,这将导致动作缓慢。相反,您可以使用Blit来执行此操作。我在以前的项目中使用过它。如果只是从中获取所需的部分,也许它也可以为您提供帮助: