这是我在这里的第一个问题!.我是新的Python,我专注于我的学习编程最简单的任务,我已经在MatLab脚本前一段时间,所以我可以比较,并确保我的Python脚本是工作.我还没有能够做一个简单的事情:我可以通过复选框在图中关闭/打开绘制点,但是我还不能用与这些点相关的标签来绘制文本。我可以看到问题是ax.text在For循环中被调用/分配给line 2,然后它只取最后分配的ax. text。这在Matlab中有一个简单的解决方案,它应该将每个ax.text存储在单元格上,然后像单元格一样调用它以关闭它。on.我一直在python上搜索相同的东西,到现在还没有运气.任何建议或阅读将非常感谢.谢谢!
x = np.random.randint(1,10,10)
y = np.random.randint(1,10,10)
z = np.random.randint(1,10,10)
tag = np.ones(len(x)).astype(str)
fig = plt.figure(figsize=(12,9))
ax = fig.add_subplot(1,1,1, projection='3d')
line1 = ax.scatter(x,y,z,'o',visible = True)
for sid, x, y, z in zip(tag, x, y, z):
line2 = ax.text(x+0.01*x, y, z, sid, None, visible = True)
lines = [line1, line2]
rax = plt.axes([0.8, 0.05, 0.1, 0.15])
labels = ['DOTS','TEXT']
visibility = [True,True]
check = CheckButtons(rax, labels, visibility)
def func(label):
index = labels.index(label)
lines[index].set_visible(not lines[index].get_visible())
plt.draw()
check.on_clicked(func)
plt.show()
字符串
1条答案
按热度按时间nxowjjhe1#
正如你提到的,
line2
只有最后的文本信息。似乎没有办法在同一时间注解多个文本。所以只要使用for循环来改变每一个按钮按下。这段代码工作。注意,我使用dic来使未知数量的点,它可能是棘手的。字符串