想要实现一个功能,根据某数据表批量进行图像的绘制,想在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