Python 仅在tkinter中打开绘图(无matplotlib弹出窗口)
我用下面的代码在tkinter窗口中打开matplotlib pyplot。我的问题是,matplotlib窗口中仍然会出现绘图,我不知道如何停止。我试着对每一个plt.plot进行注释,但没有帮助Python 仅在tkinter中打开绘图(无matplotlib弹出窗口),python,python-2.7,matplotlib,tkinter,Python,Python 2.7,Matplotlib,Tkinter,我用下面的代码在tkinter窗口中打开matplotlib pyplot。我的问题是,matplotlib窗口中仍然会出现绘图,我不知道如何停止。我试着对每一个plt.plot进行注释,但没有帮助 import numpy as np import matplotlib.pyplot as plt import matplotlib matplotlib.use('TkAgg') from numpy import arange, sin, pi from matplotlib.backend
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.use('TkAgg')
from numpy import arange, sin, pi
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.figure import Figure
import Tkinter as Tkinter
def tester():
class window(Tkinter.Tk):
def __init__(self,parent):
Tkinter.Tk.__init__(self,parent)
self.parent = parent
self.initialize()
def initialize(self):
self.grid()
self.grid_rowconfigure(0,minsize=50)
self.grid_rowconfigure(1,minsize=5)
self.grid_rowconfigure(2,minsize=500)
self.grid_rowconfigure(3,minsize=5)
self.grid_rowconfigure(4,minsize=20)
self.grid_columnconfigure(0,minsize=5)
self.grid_columnconfigure(1,minsize=800)
self.grid_columnconfigure(2,minsize=5)
framer = Tkinter.Frame(self, borderwidth=2, relief='groove',bg='white')
framer.grid(column=0,row=1,columnspan=3,rowspan=3, sticky='NSEW')
Button1 = Tkinter.Button(bg='red',text="Click Me",command=self.onbutton1)
Button1.grid(column=1,row=0,sticky='NSEW')
def onbutton1(self):
array = np.array([[1,2,3,2,1],[2,3,4,3,2],[3,4,5,4,3],[4,5,6,5,4],[3,4,5,4,3]])
maximum = np.max(array)
index_max = np.where(array == maximum)
max_a, max_b = index_max
plotter=plt.figure('plot')
plt.contour(array, linewidths = 1, colors = 'k')
plt.contourf(array, cmap = plt.cm.jet)
plt.ylabel('y', fontdict = {'fontsize':16})
plt.xlabel('x', fontdict = {'fontsize':16})
plt.colorbar()
plt.title('Title', fontdict = {'fontsize':20})
plt.plot(max_b, max_a, 'wo')
F_canvas = FigureCanvasTkAgg(plotter, self)
F_canvas.get_tk_widget().grid(column=1,row=2)
if __name__ == "__main__":
app = window(None)
app.title('Window')
app.mainloop()
tester()
谁能成为我的英雄 如果您想自己管理所有窗口,则不应使用pyplot。例如,当您执行plt.figure时,它正在创建matplotlib管理的figure窗口 甚至不要导入pyplot。具体如何调整代码取决于您使用的matplotlib功能,但是,例如,要创建图形,您需要执行以下操作:
from matplotlib import figure
plotter = figure.Figure()
通过访问该图形的轴对象并使用其方法(例如,如果有轴ax
,则可以校准ax.contour
),可以访问大多数打印类型(例如contour
)
有关如何在Tkinter应用程序中嵌入matplotlib的简单演示,请参阅。您可以对数字进行编号,即plt.figure(1),然后对其进行操作。在使用plt.show(1)之前,它们不应该出现。如果您不“显示”matplotlib窗口,这可能会抑制该窗口。@JKelly我在上面的代码中根本没有使用plt.show()。我是不是在用另一种方式“展示”它们?我是说,给它们编号可以“保存”它们,直到它们的号码被调用,但是布伦巴恩下面的建议可能更好。谢谢你的回复。我是这方面的初学者。。。制作Axis ax的语法是什么?@JohnCrow:我想你可以做
ax=plotter.gca()
来获得图形的轴。