我是一个完整的 matplotlib 菜鸟,目前对示例程序进行了一些小改动,看看会发生什么,并试图理解广泛但没有良好顺序的文档。
我正在尝试将图形显示添加到现有的基于 tk gui 的 python 程序中。我很高兴图表浮动在一个新窗口中,我不需要它嵌入到 tk 中(但是,也许下周)。
现有程序有一个用户按下的 tk.Button,它调用一个函数,该函数检索一些数据并更新一些标签中的最大/最小/平均值。
我想增强功能,以便在更新标签的同时,它还会弹出数据图表。如果图形已经存在,则按下下一个按钮应将旧迹线替换为新迹线并重新自动缩放轴。如果用户关闭图形窗口,按下下一个按钮应该会弹出一个新的。
每按一次新的图表都很容易,添加 if not self.fig 测试让我降到一个。它添加了持久跟踪,直到我添加 plt.clf()。但是,如果用户关闭图形窗口,下面的代码不会重新创建它。我想我需要类似图形是否可见,或者图形是否存在,而不是在 self.fig 上进行测试。或者也许我错过了明显的方法,并且有更好的方法?非常感谢帮助。
import Tkinter as tk
import os, sys
import numpy as np
import numpy.random as npr
import matplotlib.pyplot as plt
class Plotter():
def __init__(self):
self.fig=None
self.ax=None
def do_stuff(self):
# make plausible data
a=np.arange(0,3,0.1)
b=npr.random(1)
c=np.power(a,b)
if not self.fig:
self.fig = plt.figure()
else:
plt.clf()
self.ax = self.fig.add_subplot(111)
self.ax.plot(a,c,'k--')
self.ax.set_yticklabels([])
self.ax.set_xticklabels([])
plt.show()
p=Plotter()
root=tk.Tk()
rt = tk.Button(root, text='Capture', command=p.do_stuff)
rt.grid(row=0, column=0)
qt = tk.Button(root, text='quit', command=sys.exit)
qt.grid(row=1, column=0)
root.mainloop()