首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >清除Axes3D后重新绘制线条

清除Axes3D后重新绘制线条
EN

Stack Overflow用户
提问于 2012-06-06 21:50:52
回答 1查看 850关注 0票数 2

我有一个列表,我将Axes3D图追加到该列表中。如下所示:

代码语言:javascript
运行
复制
self.myList.append(self.axes.plot(xValues,
                                  yValues,
                                  zValues,
                                  picker=self.line_picker)[0])

当这行代码运行时,plot()函数返回的实例将存储在列表中,并自动绘制该行,这正是我想要的。此代码在程序启动时运行,并绘制数量可变的线条。

现在我需要做的是:

当用户选中复选框时,我想用另一组数据替换当前绘制的数据。然后,当用户取消选中该复选框时,我希望再次绘制初始数据。

清除初始数据没有问题;我只是这样做:

代码语言:javascript
运行
复制
self.axes.clear()
self.canvas.draw()
self.axes.mouse_init()

现在我有了一个空白的3D图形。

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-15 02:54:09

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

代码语言:javascript
运行
复制
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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10915578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档