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

2024-02-27

最新版本matplotlib自动在下面创建导航按钮graph。然而,我在互联网上看到的例子都只是展示如何创建一个图表,从而使按钮[Next] and [Previous]无用。如何绘制多个图表并使用这些按钮?

例如我想做graph for sin() and cos() from 0程度到360 degree.

现在我这样做:

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

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

如何做到当我按下“下一步”按钮时显示第二个图表?


根据文档 https://matplotlib.org/3.2.2/users/navigation_toolbar.html#interactive-navigation, the Forward and Back按钮用于让您返回到单个图形的先前视图。例如,如果您使用 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()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何绘制多个图表并使用 [matplotlib] 中的导航按钮 的相关文章

随机推荐