2015-07-21 165 views
2

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

但是我无法找到一个放入条形图。我知道制作条形图的唯一方法是这样的:http://matplotlib.org/examples/api/barchart_demo.html。显然,条形图示例中导入的模块与Tkinter示例中的模块不同,我不确定如何使它工作,如果可以的话。长话短说,任何人都可以提供一个matplotlib条形图在Tkinter窗口内显示的例子吗?谢谢。

+0

嗨,山姆,你可以添加你到目前为止尝试过吗?看起来你只需要一起去把你给的两个链接放在一起,为什么不去! – Greg

回答

3

对于任何可能在未来想知道的人,我想出了如何让它工作。基本上,你的条形图必须放在一个图上,这样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()