动态更改matplotlib绘图的内容

3
不久前,我使用Python和Matplotlib比较了两个函数的输出结果。由于Matplotlib绘图非常简单,因此结果很好:我只需用不同的标记绘制了两个数组。易如反掌。
现在我遇到了同样的问题,但是现在我有很多对曲线需要进行比较。我最初尝试使用不同的颜色和标记绘制所有内容。但是这并不能满足我的要求,因为每条曲线的范围都不太相同。除此之外,我很快就用尽了足够不同以便识别的颜色和标记(RGBCMYK,在此之后,自定义颜色与之前的任何颜色都很相似)。
我还尝试将每一组曲线放在子图中,得到一个具有许多绘图的窗口。但是这太拥挤了。我也尝试过每个绘图一个窗口,但是窗口太多了。
因此,我想知道是否存在任何现有的小部件或您是否有任何建议(或不同的想法)来完成以下任务:
我想看到一对曲线,然后使用滑动条、按钮、鼠标滚轮或任何其他小部件或事件轻松地选择下一对曲线。通过更改曲线,以前的曲线应该消失,图例和轴也应更改。

我目前的目标是连接一个事件处理程序,它可以更改绘图数据并重新绘制它。 - YuppieNetworking
3个回答

10

我成功地使用鼠标点击事件处理程序完成了它。我将把它改为更有用的东西,但无论如何,我都会发布我的解决方案。

import matplotlib.pyplot as plt

figure = plt.figure()
# plotting
plt.plot([1,2,3],[10,20,30],'bo-')
plt.grid()
plt.legend()

def on_press(event):
    print 'you pressed', event.button, event.xdata, event.ydata
    event.canvas.figure.clear()
    # select new curves to plot, in this example [1,2,3] [0,0,0]
    event.canvas.figure.gca().plot([1,2,3],[0,0,0], 'ro-')
    event.canvas.figure.gca().grid()
    event.canvas.figure.gca().legend()
    event.canvas.draw()


figure.canvas.mpl_connect('button_press_event', on_press)

2

我非常喜欢使用traits。 如果您按照教程 编写用于科学编程的图形应用程序,那么您应该能够做到您想要的。 该教程演示了如何使用图形用户界面与 matplotlib 图表进行交互。


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接