在Tkinter中显示matplotlib条形图

时间:2015-07-21 21:06:40

标签: python matplotlib charts tkinter

我正在尝试在Tkinter窗口中显示matplotlib条形图。我找到了很多关于如何放置折线图的教程,例如: http://matplotlib.org/examples/user_interfaces/embedding_in_tk.html

但我无法找到一个放入条形图的人。我知道制作条形图的唯一方法是:http://matplotlib.org/examples/api/barchart_demo.html。显然,条形图示例中导入的模块与Tkinter示例中的模块不同,如果可以的话,我不知道如何使其工作。

长话短说,有人能为我提供一个在Tkinter窗口内显示的matplotlib条形图的示例吗?感谢。

1 个答案:

答案 0 :(得分:5)

对于任何可能在将来感到疑惑的人,我想出了如何让它发挥作用。基本上,您的条形图必须在图上,以便FigureCanvasTkAgg可以生成Tkinter要使用的小部件。我原以为你需要使用pyplot,这不是真的。这就是我想出的:

import matplotlib, numpy, sys
matplotlib.use('TkAgg')
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
if sys.version_info[0] < 3:
    import Tkinter as Tk
else:
    import tkinter as Tk

root = Tk.Tk()

f = Figure(figsize=(5,4), dpi=100)
ax = f.add_subplot(111)

data = (20, 35, 30, 35, 27)

ind = numpy.arange(5)  # the x locations for the groups
width = .5

rects1 = ax.bar(ind, data, width)

canvas = FigureCanvasTkAgg(f, master=root)
canvas.show()
canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)

Tk.mainloop()