是否可以使用内置箭头在要显示的绘图之间切换



我正在尝试创建一个"程序",允许我在 1 个窗口中拥有 2 个单独的绘图。我不希望它们同时显示,我希望能够使用图形窗口底部的箭头在绘图之间切换。

import matplotlib.pyplot as plt
import matplotlib.animation as animation
import matplotlib.style as style
import plotgen
style.use("bmh")
dp = 30
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1, label="ax1")
ax2 = fig.add_subplot(1,1,1, label="ax2")

cax = 2
plotgen.clear("plot1.txt")
plotgen.clear("plot2.txt")
def animate(i):
    if cax == 1:
        plotgen.generate("plot1.txt")
        graph_data = open('plot1.txt', 'r').read()
        lines = graph_data.split('n')
        xs = []
        ys = []
        for line in lines:
            if len(line) > 1:
                x, y = line.split(',')
                xs.append(x)
                ys.append(float(y))
        ax1.clear()
        pxs = 0
        pys = 0
        lx = len(xs)
        ly = len(ys)
        if len(xs) < dp:
            pxs = xs
            pys = ys
        else:
            pxs = xs[(lx - (dp - 1)):(lx - 1)]
            pys = ys[(ly - (dp - 1)):(ly - 1)]
        ax1.plot(pxs, pys, "r")
    elif cax == 2:
        plotgen.generate("plot2.txt")
        graph_data = open('plot2.txt', 'r').read()
        lines = graph_data.split('n')
        xs = []
        ys = []
        for line in lines:
            if len(line) > 1:
                x, y = line.split(',')
                xs.append(x)
                ys.append(float(y))
        ax2.clear()
        pxs = 0
        pys = 0
        lx = len(xs)
        ly = len(ys)
        if len(xs) < dp:
            pxs = xs
            pys = ys
        else:
            pxs = xs[(lx - (dp - 1)):(lx - 1)]
            pys = ys[(ly - (dp - 1)):(ly - 1)]
        ax2.plot(pxs, pys)
ani = animation.FuncAnimation(fig, animate, interval=500)
plt.show()

目前,我目前正在使用 cax 变量在我想在图形上看到的图之间切换,这是我想要使用箭头增加或减少的图。

也出于某种原因我看不到ax1子情节,我认为它是"落后"ax2.不过,数据生成适用于两者。

只是想澄清我想要的答案:

1:"是否可以使用箭头在绘图之间切换?

2:"当一个图绘制另一个图时,是否有

可能使另一个图不可见(删除x和y轴,这样它们就不会混合(">

3:"为什么我看不到ax1

我通过使用ax2.set_visible(False)解决了ax1不显示的问题。当我更改情节时,我使其再次可见并使 ax1 不可见。

我还使用以下简短的代码段在我的绘图中添加了按钮:

axnext = plt.axes([0.80, 0.01, 0.06, 0.06])
axprev = plt.axes([0.73, 0.01, 0.06, 0.06])
bnext = Button(axnext, 'Next >')
bnext.on_clicked(self.changePlotNext)
bprev = Button(axprev, "< Previous")
bprev.on_clicked(self.changePlotPrev)

然后我只是添加了简单的函数,这些函数可以增加或减少我拥有的cax变量。我不得不对我的动画功能进行一些小的编辑,以节省绘图时的资源,我还删除了第二个子图,并决定只使用一个子图。

相关内容

  • 没有找到相关文章

最新更新