Интерактивное черчение в блокноте Python jupyter - PullRequest
0 голосов
/ 28 мая 2020

У меня есть этот код, он позволяет мне вводить данные и строить их разными способами, он использует matplotlib и tkinter, все в порядке. Теперь я хотел сделать то же самое в ноутбуке jupyter, но, похоже, это не очевидная вещь (и я новичок в jupyter), я хочу сделать то же, что и в предыдущем примере в ноутбуке jupyter, преобразовать ipynb в html но при этом интерактивность тоже.

import tkinter as tk
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure

root= tk.Tk()

canvas1 = tk.Canvas(root, width = 800, height = 300)
canvas1.pack()

label1 = tk.Label(root, text='Graphical User Interface')
label1.config(font=('Arial', 20))
canvas1.create_window(400, 50, window=label1)

entry1 = tk.Entry (root)
canvas1.create_window(400, 100, window=entry1) 

entry2 = tk.Entry (root)
canvas1.create_window(400, 120, window=entry2) 

entry3 = tk.Entry (root)
canvas1.create_window(400, 140, window=entry3) 

def create_charts():
    global x1
    global x2
    global x3
    global bar1
    global pie2
    x1 = float(entry1.get())
    x2 = float(entry2.get())
    x3 = float(entry3.get())

    figure1 = Figure(figsize=(4,3), dpi=100) 
    subplot1 = figure1.add_subplot(111) 
    xAxis = [float(x1),float(x2),float(x3)] 
    yAxis = [float(x1),float(x2),float(x3)] 
    subplot1.bar(xAxis,yAxis, color = 'lightsteelblue') 
    bar1 = FigureCanvasTkAgg(figure1, root) 
    bar1.get_tk_widget().pack(side=tk.LEFT, fill=tk.BOTH, expand=0)

    figure2 = Figure(figsize=(4,3), dpi=100) 
    subplot2 = figure2.add_subplot(111) 
    xAxis2 = [float(x1),float(x2),float(x3)] 
    yAxis2= [float(x1)*2,float(x2)*2,float(x3)*2] 
    subplot2.scatter(xAxis2,yAxis2, color = 'lightsteelblue') 
    bar2 = FigureCanvasTkAgg(figure2, root) 
    bar2.get_tk_widget().pack(side=tk.LEFT, fill=tk.BOTH, expand=0)

    # if u want piechart
##    figure2 = Figure(figsize=(4,3), dpi=100) 
##    subplot2 = figure2.add_subplot(111)
##    labels2 = 'Label1', 'Label2', 'Label3' 
##    pieSizes = [float(x1),float(x2),float(x3)]
##    my_colors2 = ['lightblue','lightsteelblue','silver']
##    explode2 = (0, 0.1, 0)  
##    subplot2.pie(pieSizes, colors=my_colors2, explode=explode2, labels=labels2, autopct='%1.1f%%', shadow=True, startangle=90) 
##    subplot2.axis('equal')  
##    pie2 = FigureCanvasTkAgg(figure2, root)
##    pie2.get_tk_widget().pack()

def clear_charts():
    bar1.get_tk_widget().pack_forget()
    pie2.get_tk_widget().pack_forget()

button1 = tk.Button (root, text=' Create Charts ',command=create_charts, bg='palegreen2', font=('Arial', 11, 'bold')) 
canvas1.create_window(400, 180, window=button1)

button2 = tk.Button (root, text='  Clear Charts  ', command=clear_charts, bg='lightskyblue2', font=('Arial', 11, 'bold'))
canvas1.create_window(400, 220, window=button2)

button3 = tk.Button (root, text='Exit Application', command=root.destroy, bg='lightsteelblue2', font=('Arial', 11, 'bold'))
canvas1.create_window(400, 260, window=button3)

root.mainloop()

enter image description here

...