如何绘制多个图形并使用[matplotlib]中的导航按钮

qltillow  于 2023-10-24  发布在  其他
关注(0)|答案(2)|浏览(138)

最新版本的**matplotlib**会自动在graph下创建导航按钮,但我在网上看到的例子都是只创建一个图,这样[Next][Previous]按钮就没用了,我怎么样绘制多个图,并使用这些按钮呢?
例如,我想让graphsin()cos()0度到360度。
现在我是这样做的:

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(),则两者将显示在同一个图中。
如何使它,使第二个图形显示时,我按下下一步按钮?

5w9g7ksd

5w9g7ksd1#

根据文档,ForwardBack按钮用于允许您返回到单个图形的上一个视图。例如,如果您使用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()

为您提供:

或者,您可以在使用以下命令单击两个图形时在它们之间交替:

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()
798qvoo8

798qvoo82#

这些上一页/下一页按钮不是用来浏览不同的图的,它们允许观众浏览他通过平移/缩放和缩放矩形选择的“视图”。从这个意义上说,“主页”只是一个快捷方式,可以多次按下“上一页”。

相关问题