Как встроить анимацию matplotlib в кадр tkinter? ⇐ Python
-
Anonymous
Как встроить анимацию matplotlib в кадр tkinter?
I am fairly new to python but know a decent amount.
I am currently trying to develop a stock market sim which extracts stock prices from yahoo finance and plots it on a tkinter frame using matplotlib FuncAnimation.
I have managed to get the web scraping and append to a csv working thanks to a tutorial but am struggling to actually plot the prices on a frame which updates every time the stock price is fetched.
I have had a look at other posts about similar issues, but I'm not too sure how I can apply it in the context of my own project.
I have had a look into threading since the web scraping has a while loop to fetch the prices, but that is an issue for another day as I am currently just using another terminal to update the csv file. Here is my code for generating the graph:
generate_graph = ctk.CTkButton(master=self.market_frame, width=150, text='Generate', command=lambda: plot()) generate_graph.place(relx=0.25, rely=0.9) def plot(): plt.style.use('fivethirtyeight') fig = plt.Figure(figsize = (5,4), dpi = 50) ax = fig.add_subplot(111) def update_data(frame_number): data = pd.read_csv('data.csv') x_data = data['x_value'] s_price = data['stock_price'] ax.clear() ax.plot(x_data, s_price) ani = FuncAnimation(fig, update_data, interval=1000) canvas = FigureCanvasTkAgg(fig, master=self.market_frame) canvas.get_tk_widget().place(relx=0.085, rely=0.12) canvas.draw() After clicking Generate multiple times
When running my web scrape in another terminal, the graph only updates when I click 'Generate'. Is there anyway I can get the FuncAnimation to update automatically instead of having to always click 'Generate'.
Источник: https://stackoverflow.com/questions/780 ... nter-frame
I am fairly new to python but know a decent amount.
I am currently trying to develop a stock market sim which extracts stock prices from yahoo finance and plots it on a tkinter frame using matplotlib FuncAnimation.
I have managed to get the web scraping and append to a csv working thanks to a tutorial but am struggling to actually plot the prices on a frame which updates every time the stock price is fetched.
I have had a look at other posts about similar issues, but I'm not too sure how I can apply it in the context of my own project.
I have had a look into threading since the web scraping has a while loop to fetch the prices, but that is an issue for another day as I am currently just using another terminal to update the csv file. Here is my code for generating the graph:
generate_graph = ctk.CTkButton(master=self.market_frame, width=150, text='Generate', command=lambda: plot()) generate_graph.place(relx=0.25, rely=0.9) def plot(): plt.style.use('fivethirtyeight') fig = plt.Figure(figsize = (5,4), dpi = 50) ax = fig.add_subplot(111) def update_data(frame_number): data = pd.read_csv('data.csv') x_data = data['x_value'] s_price = data['stock_price'] ax.clear() ax.plot(x_data, s_price) ani = FuncAnimation(fig, update_data, interval=1000) canvas = FigureCanvasTkAgg(fig, master=self.market_frame) canvas.get_tk_widget().place(relx=0.085, rely=0.12) canvas.draw() After clicking Generate multiple times
When running my web scrape in another terminal, the graph only updates when I click 'Generate'. Is there anyway I can get the FuncAnimation to update automatically instead of having to always click 'Generate'.
Источник: https://stackoverflow.com/questions/780 ... nter-frame