Skip to content

Commit 26e05de

Browse files
committed
tkinter
1 parent 7a1beef commit 26e05de

File tree

1 file changed

+118
-0
lines changed
  • tkinter/matplotlib-replace-data-axis-figure

1 file changed

+118
-0
lines changed
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
#!/usr/bin/env python3
2+
3+
# date: 2020.03.30
4+
5+
import tkinter as tk
6+
from matplotlib.figure import Figure
7+
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
8+
import random
9+
10+
# --- functions ---
11+
12+
def clear_data():
13+
datax = []
14+
datay = []
15+
16+
plot[0].set_data(datax, datay)
17+
18+
canvas.draw()
19+
20+
def replace_data():
21+
datax = range(10)
22+
datay = [x/10 for x in random.sample(range(10), 10)]
23+
24+
plot[0].set_data(datax, datay)
25+
26+
canvas.draw()
27+
28+
def clear_axis():
29+
global plot
30+
31+
axis.clear()
32+
#axis.cla()
33+
34+
canvas.draw()
35+
36+
def replace_axis():
37+
global plot
38+
39+
axis.clear()
40+
#axis.cla()
41+
42+
datax = range(10)
43+
datay = [x/10 for x in random.sample(range(10), 10)]
44+
45+
plot = axis.plot(datax, datay)
46+
47+
canvas.draw()
48+
49+
def clear_figure():
50+
fig.clear()
51+
#fig.clf()
52+
53+
canvas.draw()
54+
55+
def replace_figure():
56+
global fig
57+
global axis
58+
global plot
59+
60+
fig.clear()
61+
#fig.clf()
62+
63+
# create figure, axis, canvas
64+
fig = Figure(figsize=(5, 5))
65+
axis = fig.add_subplot(111)
66+
canvas.figure = fig
67+
68+
datax = range(10)
69+
datay = [x/10 for x in random.sample(range(10), 10)]
70+
71+
plot = axis.plot(datax, datay)
72+
73+
canvas.draw()
74+
75+
# --- main ---
76+
77+
root = tk.Tk()
78+
79+
datax = range(10)
80+
datay = [x/10 for x in random.sample(range(10), 10)]
81+
82+
# create figure, axis, canvas
83+
fig = Figure(figsize=(5, 5))
84+
axis = fig.add_subplot(111)
85+
86+
canvas = FigureCanvasTkAgg(fig, master=root)
87+
canvas.get_tk_widget().pack(side='top', fill='both', expand=True)
88+
89+
# plot data
90+
plot = axis.plot(datax, datay)
91+
92+
# redraw (if needed)
93+
#canvas.draw()
94+
95+
# buttons
96+
97+
frame = tk.Frame(root)
98+
frame.pack()
99+
100+
b = tk.Button(frame, text='Clear data', command=clear_data)
101+
b.grid(row=0, column=0, sticky='we')
102+
103+
b = tk.Button(frame, text='Replace data', command=replace_data)
104+
b.grid(row=0, column=1, sticky='we')
105+
106+
b = tk.Button(frame, text='Clear axis', command=clear_axis)
107+
b.grid(row=1, column=0, sticky='we')
108+
109+
b = tk.Button(frame, text='Replace axis', command=replace_axis)
110+
b.grid(row=1, column=1, sticky='we')
111+
112+
b = tk.Button(frame, text='Clear figure', command=clear_figure)
113+
b.grid(row=2, column=0, sticky='we')
114+
115+
b = tk.Button(frame, text='Replace figure', command=replace_figure)
116+
b.grid(row=2, column=1, sticky='we')
117+
118+
root.mainloop()

0 commit comments

Comments
 (0)