3

不久前,我正在使用 python 和 matplotlib 比较两个函数的输出。结果非常简单,因为使用 matplotlib 绘图非常简单:我只是绘制了两个具有不同标记的数组。小菜一碟。

现在我发现自己遇到了同样的问题,但现在我有很多曲线要比较。我最初尝试用不同的颜色和标记绘制所有内容。这并不让我满意,因为每条曲线的范围并不完全相同。除此之外,我很快就用完了足够不同的颜色和标记来识别(RGBCMYK,之后,自定义颜色类似于以前的任何颜色)。

我还尝试绘制每对曲线的子图,获得一个包含许多图的窗口。太拥挤。我尝试每个情节一个窗口,太多的窗口。

所以我只是想知道是否有任何现有的小部件,或者您是否有任何建议(或不同的想法)来实现这一点:

我想查看一对曲线,然后使用滑动条、按钮、鼠标滚动或任何其他小部件或事件轻松选择下一条曲线。通过改变曲线,前一个应该消失,图例应该改变,它的轴也应该改变。

4

3 回答 3

9

好吧,我设法使用鼠标单击的事件处理程序来做到这一点。我会将它更改为更有用的东西,但无论如何我都会发布我的解决方案。

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)
于 2010-01-12T17:59:23.427 回答
2

听起来您想在应用程序中嵌入 matplotlib。有一些可用的资源:

于 2010-01-12T18:02:41.360 回答
2

I really like using traits. If you follow the tutorial Writing a graphical application for scientific programming , you should be able to do what you want. The tutorial shows how to interact with a matplotlib graph using graphical user interface.

于 2010-02-11T12:26:57.393 回答