如何在matplotlib中交互地切换图,或有选择地隐藏和显示图上的数据?
问题描述:
我想有一个按钮,可以将显示的图从一组子图转换到另一组子图,以便有人可以轻松地在它们之间切换,从而直观地比较差异。如果我创建了几个数字,有没有办法显示一个按钮来选择显示哪个图形?或者有没有一种方法可以交互式选择性地显示和隐藏图中的一部分数据向量?如何在matplotlib中交互地切换图,或有选择地隐藏和显示图上的数据?
答
事实上,这可以用matplotlib event handling和animation(调用set_ydata
改变图)的一个小技巧来完成。
例如,这种切换两个地块之间,当你点击鼠标:
import matplotlib.pyplot as plt
import numpy as np
import itertools
fig = plt.figure()
ax = fig.add_subplot(111)
y1 = np.random.rand(10)
y2 = np.random.rand(10)
ys = itertools.cycle((y1,y2))
line, = ax.plot(next(ys))
def onclick(event):
line.set_ydata(next(ys))
fig.canvas.draw()
cid = fig.canvas.mpl_connect('button_press_event', onclick)
plt.show()
你可以得到与onclick
功能票友。例如,您可以使用它来显示所有图的缩略图,然后在下一次单击时使用鼠标的位置来确定选择哪个图。然后显示该图。
并排或一个在另一个不起作用? – 2012-08-08 17:02:36