赞
踩
Matplotlib是Python语言及其数值计算库NumPy的绘图库。它提供了一个物件导向的API,可以将绘图嵌入到使用通用GUI工具包(如Tkinter、wxPython、Qt或GTK)的程序中。
如何在Tkinter应用中嵌入Matplotlib绘图?
在Tkinter中嵌入Matplotlib绘图的关键两个类:FigureCanvasTkAgg、NavigationToolbar2Tk。
Matplotlib 为我们提供了几个类,允许将 Matplotlib 图形和绘图功能集成到Tkinter GUI中。其中一个类是FigureCanvasTkAgg,它是一种特殊的画布,可以在其上绘制 Matplotlib 图形,并且它 也可以作为常规 Tkinter 小部件插入到 Tkinter GUI 中。
而NavigationToolbar2Tk类用于添加导航工具栏,提供了与图形交互的有用功能,例如Zoom in、Zoom out、Save Graph等,如果不需要导航工具栏,可不使用NavigationToolbar2Tk类。
Figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)
Matplotlib 有一个称为backends的特殊模块,其中包含用于与 Tkinter 等其他流行库集成的各种子模块。Tkinter 的后端库称为backend_tkagg,它包含可用于 Matplotlib 和 Tkinter 集成的各种类。这是我们将从中导入FigureCanvasTkAgg 的地方。
该类的第一个参数FigureCanvasTkAgg()是 Matplotlib 图对象,第二个参数是 Tkinter 应用程序的根对象。
import tkinter as tk import matplotlib matplotlib.use('TkAgg') from matplotlib.figure import Figure from matplotlib.backends.backend_tkagg import ( FigureCanvasTkAgg, NavigationToolbar2Tk ) class App(tk.Tk): def __init__(self): super().__init__() self.title('Tkinter Matplotlib Demo') # prepare data data = { 'Python': 11.27, 'C': 11.16, 'Java': 10.46, 'C++': 7.5, 'C#': 5.26 } languages = data.keys() popularity = data.values() # 步骤1:创建一个图对象 figure = Figure(figsize=(6, 4), dpi=100) # 步骤2:创建FigureCanvasTkAgg 对象,添加一个画布figure_canvas figure_canvas = FigureCanvasTkAgg(figure, self) # 添加导航工具栏,必须要先创建FigureCanvasTkAgg 对象(非必须) NavigationToolbar2Tk(figure_canvas, self) # 步骤3:创建子图 axes 坐标轴 axes = figure.add_subplot() # 步骤4:绘图,创建直方图 axes.bar(languages, popularity) axes.set_title('Top 5 Programming Languages') axes.set_ylabel('Popularity') #步骤5:画布布局,嵌入Tkinter figure_canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=1) if __name__ == '__main__': app = App() app.mainloop()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。