2015-10-15 80 views
3

最新版本的matplotlib自动创建导航按钮下。然而,我在互联网上看到的例子都显示了如何创建一个图表,从而使按钮[Next][Previous]无用。我如何绘制几个图形并利用这些按钮?如何绘制几张图并利用[matplotlib]中的导航按钮

比如我想让为sin()cos()0360程度。

现在,我不喜欢这样写道:

import scipy 
from matplotlib import pyplot 

DataRange = range(0, 360) 
DataRange = map(scipy.deg2rad, DataRange) 
Data1 = map(scipy.sin, DataRange) 
Data2 = map(scipy.cos, DataRange) 
pyplot.plot(Data1) 
pyplot.show() # <--- if I exclude this 
pyplot.plot(Data2) 
pyplot.show() 

sin()图形将显示。当我关闭窗口时,将显示cos图表。如果我排除第一个pyplot.show(),则两者将显示在同一图中。

如何使它在按下“下一步”按钮时显示第二个图形?

+0

你没有道理。第一段你抱怨得到一张图,按钮什么都不做,下一段你抱怨说你得到两张图,他们做了一些事情。请再说一遍描述问题。 –

回答

3

根据documentationForwardBack按钮用于允许您返回到单个图形的先前视图。例如,如果您使用Zoom-to-rectangle功能,则Back按钮会使您返回到上一个显示。根据您的后端,按下这些按钮时可能挂钩。

可以很明显的绘制使用subplot在同一时间几个图如下:

import scipy 
from matplotlib import pyplot 

DataRange = range(0, 360) 
DataRange = map(scipy.deg2rad, DataRange) 
Data1 = map(scipy.sin, DataRange) 
Data2 = map(scipy.cos, DataRange) 

pyplot.subplot(211) 
pyplot.plot(Data1) 
pyplot.subplot(212) 
pyplot.plot(Data2) 
pyplot.show() 

给你:

enter image description here

或者,也可以当他们的两个数字之间交替点击使用以下内容:

import scipy 
from matplotlib import pyplot 

DataRange = range(0, 360) 
DataRange = map(scipy.deg2rad, DataRange) 
Data1 = map(scipy.sin, DataRange) 
Data2 = map(scipy.cos, DataRange) 

toggle = True 

def onclick(event): 
    global toggle 

    toggle = not toggle 
    event.canvas.figure.clear() 

    if toggle: 
     event.canvas.figure.gca().plot(Data1) 
    else: 
     event.canvas.figure.gca().plot(Data2) 

    event.canvas.draw() 

fig = pyplot.figure() 
fig.canvas.mpl_connect('button_press_event', onclick) 

pyplot.plot(Data1) 
pyplot.show()