Вместо axes.clear()
+ fig.add_subplot
, используйте метод remove
объекта mpl_toolkits.mplot3d.art3d.Patch3DCollection
:
In [31]: fig = plt.figure()
In [32]: ax = fig.add_subplot(111, projection='3d')
In [33]: xs = np.random.random_sample(100)
In [34]: ys = np.random.random_sample(100)
In [35]: zs = np.random.random_sample(100)
In [36]: a = ax.scatter(xs, ys, zs, c='r', marker='o') #draws
In [37]: a.remove() #clean
In [38]: a = ax.scatter(xs, ys, zs, c='r', marker='o') #draws again
Если у вас все еще есть проблемы, вы можете поиграть с этим:
import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import interactive
interactive(True)
xs = np.random.random_sample(100)
ys = np.random.random_sample(100)
zs = np.random.random_sample(100)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
a = ax.scatter(xs, ys, zs, c='r', marker='o')
plt.draw()
raw_input('press for new image')
a.remove()
xs = np.random.random_sample(1000)
ys = np.random.random_sample(1000)
zs = np.random.random_sample(1000)
a = ax.scatter(xs, ys, zs, c='r', marker='o')
plt.draw()
raw_input('press to end')