Matplotlib 清除Axes3D后重新打印线

Matplotlib 清除Axes3D后重新打印线,matplotlib,3d,Matplotlib,3d,我有一个附加Axes3D绘图的列表。像这样: self.myList.append(self.axes.plot(xValues, yValues, zValues, picker=self.line_picker)[0]) 当该行代码运行时,plot()函数返回的实例存储在列表中,该行将自动

我有一个附加Axes3D绘图的列表。像这样:

self.myList.append(self.axes.plot(xValues,
                                  yValues,
                                  zValues,
                                  picker=self.line_picker)[0])
当该行代码运行时,plot()函数返回的实例存储在列表中,该行将自动打印,这就是我想要的。此代码在程序启动时运行,并绘制可变数量的行

现在我需要做的是:

当用户选中复选框时,我想用另一组数据替换当前打印的数据。然后,当用户取消选中复选框时,我希望重新打印初始数据

我在清除初始数据方面没有问题;我只是:

self.axes.clear()
self.canvas.draw()
self.axes.mouse_init()
现在我有了一张空白的3D图

清除相同数据后,如何重新绘制?我能否以某种方式使用列表中存储的打印实例并重新打印它们


我的最终问题是,我是否必须像第一次那样使用原始数据重新绘制原始绘图,或者我是否可以隐藏/禁用初始轴,然后简单地恢复它?

最简单的解决方案可能是保留项目的参考,并简单地切换特定艺术家的可见属性:

import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

plt.ion()

ax = plt.axes(projection='3d')
n = 3

xs = np.random.randint(23, 32, n)
ys = np.random.randint(0, 100, n)
zs = np.random.randint(0, 10, n)
scatter = ax.scatter(xs, ys, zs=zs)

plt.draw()
scatter.set_visible(False)
plt.draw()
scatter.set_visible(True)
plt.draw()

可能最简单的解决方案是保留项目的引用,并简单地切换特定艺术家的可见属性:

import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

plt.ion()

ax = plt.axes(projection='3d')
n = 3

xs = np.random.randint(23, 32, n)
ys = np.random.randint(0, 100, n)
zs = np.random.randint(0, 10, n)
scatter = ax.scatter(xs, ys, zs=zs)

plt.draw()
scatter.set_visible(False)
plt.draw()
scatter.set_visible(True)
plt.draw()