如何在Tkinter里实现循环里的逐图显示Figure的绘制?

想要实现一个功能,根据某数据表批量进行图像的绘制,想在Tkinter上定义一个位置及大小,绘制一个显示一个,直到结束,但使用for循环后发现最后是把所有的曲线显示到最后一个图上,经网上搜寻N久,未找到解决办法,请大神帮忙完善,下面是示例代码:

 

from tkinter import *

import matplotlib

import matplotlib.pyplot as plt

from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

from matplotlib.figure import Figure



 

root = Tk()  # 创建窗口

root.title("plot")

root.geometry('800x600')

#定义图像

fig = plt.figure(figsize=(10,4),dpi=100)#图像大小

canvas_spice = FigureCanvasTkAgg(fig,root)

canvas_spice.get_tk_widget().pack()#位置

 

x =[1,2,3,4,5]

y =[[1,2,3,4,5],[2,3,4,5,6],[3,4,5,6,7],[4,5,6,7,8]]

def start():

    for i in range(4):   

        y1 = y[i]

        plt.rcParams['font.sans-serif']='SimHei'#全局字体

        plt.axis([0,5,0,10])

        plt.plot(x,y1)

        plt.grid(True)

        canvas_spice.draw()

 #按钮

button = Button(root,text='开始',command=start)

button.place(x=400,y=550)

 

root.mainloop()

 

 

你是一条线一个图?然后四个图?那么第二图画完,第一张图怎样处理?

from tkinter import *

import matplotlib

import matplotlib.pyplot as plt

from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

from matplotlib.figure import Figure

root = Tk()  # 创建窗口

root.title("plot")

root.geometry('800x600')

# 定义图像

fig = plt.figure(figsize=(10, 4), dpi=100)  # 图像大小

canvas_spice = FigureCanvasTkAgg(fig, root)

canvas_spice.get_tk_widget().pack()  # 位置

x = [1, 2, 3, 4, 5]

y = [[1, 2, 3, 4, 5], [2, 3, 4, 5, 6], [3, 4, 5, 6, 7], [4, 5, 6, 7, 8]]

i = 0
def start():
    global i
    if i < len(y):
        fig.clear()
        y1 = y[i]
        plt.rcParams['font.sans-serif'] = 'SimHei'  # 全局字体
        plt.axis([0, 5, 0, 10])
        plt.plot(x, y1)
        plt.grid(True)
        canvas_spice.draw()
        i += 1

# 按钮

button = Button(root, text='开始', command=start)

button.place(x=400, y=550)

root.mainloop()

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps: 问答会员年卡【8折】购 ,限时加赠IT实体书,即可 享受50次 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m