大家好,祝新年快乐。 我的代码需要一些帮助。 我已经在tkinter中嵌入了pyplot但是每次调用该函数时,它都会打开并且新的空数字1,图2等等。我现在必须关闭这些数字,但是当我的脚本运行时,每次我需要更新绘图时,它会打开新的空数字和时间,没有任何理由。到目前为止这是我的代码。在此先感谢您的任何帮助
def plot_tour(self, tour_tuples):
"""
We call this passing the list of tuples with city
coordinates to plot the tour we want on the GUI
"""
data_in_array = np.array(tour_tuples)
transposed = data_in_array.T
x, y = transposed
self.f, self.a = plt.subplots(1, 1)
self.f = Figure(figsize=(8, 6), dpi=100)
self.a = self.f.add_subplot(111)
self.a.plot(x, y, 'ro')
self.a.plot(x, y, 'b-')
self.a.set_title('Current best tour')
self.a.set_xlabel('X axis coordinates')
self.a.set_ylabel('Y axis coordinates')
self.a.grid(True)
self.canvas = FigureCanvasTkAgg(self.f, master=root)
self.canvas.mpl_connect('motion_notify_event', on_move)
self.canvas.get_tk_widget().grid(row=1, column=1, sticky=W)
plt.close('all')
在tcaswell的提议之后,额外的数字被消除了。为了更新思想,情节需要一个canvaw.draw()和一个canvas.show()。完整代码现在如下
def plot_tour(self, tour_tuples):
"""
We call this passing the list of tuples with city
coordinates to plot the tour we want on the GUI
"""
data_in_array = np.array(tour_tuples)
transposed = data_in_array.T
x, y = transposed
plt.ion()
#self.f, self.a = plt.subplots(1, 1)
self.f = Figure(figsize=(8, 6), dpi=100)
self.a = self.f.add_subplot(111, navigate=True)
self.a.plot(x, y, 'ro')
self.a.plot(x, y, 'b-')
self.a.set_title('Current best tour')
self.a.set_xlabel('X axis coordinates')
self.a.set_ylabel('Y axis coordinates')
self.a.grid(True)
self.canvas = FigureCanvasTkAgg(self.f, master=root)
self.canvas.mpl_connect('motion_notify_event', on_move)
self.canvas.get_tk_widget().grid(row=1, column=1, sticky=W)
self.canvas.draw()
self.canvas.show()
答案 0 :(得分:2)
只需删除
行即可self.f, self.a = plt.subplots(1, 1)
它应该正常工作。当您使用OO界面将mpl嵌入到更大的应用程序中时,您甚至不需要导入 pyplot。
这些examples也可能非常有用。