Matplotlib Subplot进入Tkinter GUI窗口

时间:2014-08-03 22:16:33

标签: user-interface matplotlib tkinter python-3.4

我正在研究Tkinter GUI,我想知道是否可以将Subplot放入Tkinter GUI。任何帮助将不胜感激,因为我目前不知道。

import pandas.io.data as web
import matplotlib.pyplot as plt
import datetime

start = datetime.datetime(2010, 1, 1)
end = datetime.datetime(2014, 8, 3)

google = web.DataReader("GOOG", 'yahoo', start, end )

ax1 = plt.subplot2grid((4,4), (0,0), colspan=4)
ax2 = plt.subplot2grid((4,4), (1,0), colspan=2)

top = plt.subplot2grid((4,4), (0, 0), rowspan=3, colspan=4)
top.plot(google.index, google["Close"])
plt.title('Google Stock Price from 2007 - 2012')

bottom = plt.subplot2grid((4,4), (3,0), rowspan=1, colspan=4)
bottom.bar(google.index, google['Volume'])
plt.title('Google Trading Volume in Millions')

plt.gcf().set_size_inches(15,8)
plt.show()

我正在处理这个问题,但是如果它不是一个完全独立的窗口,我就无法将它放到GUI中。

self.root2= Tk()
self.root2.geometry("600x400")
self.root2.title("Stock Visualization")
frame = Frame(self.root2)
frame.grid(row=2,column=0, sticky="s")
frame2 = Frame(self.root2)
frame2.grid(row=0,column=0, sticky = "n")
##        self.canvas=Canvas(self.root2, width=300, height=300, background='white')
##        self.canvas.grid(row=1,column=0, columnspan = 4)

这是框架的一部分,没有所有标签等。我有Canvas注释了我希望Subplot去哪里。

1 个答案:

答案 0 :(得分:0)

这可能有点晚了,但你应该尝试一下这个

     fig = Figure(figsize=(5,4), dpi = 100)
     ax = fig.add_subplot(111)
     figcanvas = FigureCanvasTkAgg(fig, master = root)
     plotthis(figcanvas, ax)#in this example plotthis is a function that plots the figure, ax being a graph, and figcanvas being the canvas of which the graph is being plotted to.
     figcanvas.get_tk_widget().grid()

就像有点抬头一样,我不认为这种方法在3中有效,所以到目前为止,如果可能的话,我会在2中做到这一点。不知道为什么它不起作用。希望这有助于:)