Tema 9 GRAFICOS EN PYTHON
1) Concepto de Tk
tkinter es un binding de la biblioteca gráfica Tcl/Tk para el lenguaje de programación Python, Tk se encuentra disponible para varios lenguajes de programación
entre los cuales se encuentra Python con el nombre de tkinter. Este no es más que una capa de esta librería para el lenguaje Python con lo cual usar Tk en
otro lenguaje no nos supondrá un inconveniente.
Un binding, en el campo de la programación, es la adaptación de una biblioteca para ser usada en un lenguaje de programación distinto de aquél en el que
ha sido escrita.
2) Posicionamiento
Los relativos son porcentajes.
from tkinter import Tk, Label, Button, Entry
form=Tk()
form.title('Titulo')
form.geometry('400x200')
lbl1 = Label(form,text='Primer numero : ')
lbl1.place(x=10,y=10, width=100,height=30)
lbl2 = Label(form,text='Segundo numero : ')
lbl2.place(x=10,y=50, width=100,height=30)
lbl3 = Label(form,text='Resultado : ')
lbl3.place(x=10,y=120, width=100,height=30)
txt1 = Entry(form, bg='Dark turquoise')
txt1.place(x=120,y=10,width=100,height=30)
txt2 = Entry(form, bg='Dark turquoise')
txt2.place(x=120,y=50,width=100,height=30)
txt3 = Entry(form, bg='Dark turquoise')
txt3.place(x=120,y=120,width=100,height=30)
def suma():
num1 = txt1.get()
num2 = txt2.get()
res = int(num1)+int(num2)
txt3.delete(0,'end')
txt3.insert(0,res)
btn1 = Button(form,text='SUMAR', command=suma)
btn1.place(x=250,y=80,width=100,height=30)
form.mainloop()
3) Gráficos
Es necesario tener el módulo Matplotlib,
La Instalación de Matplotlib, consta de los siguientes pasos:
a) Iniciar la ventana comandos, teclas WIN + R, escrbir cmd
b) Escribir el comando: C:\...\python310\python.exe –m pip install --upgrade pip
c) Escribir el comando: C:\... python310\python –m pip install matplotlib,
luego se observará la siguiente pantalla de instalación.
Con esta ultima pantalla, el módulo matplotlib esta instalado.
Ejemplo 1)
from matplotlib import pyplot as plt
x = [1,2,3]
y = [4.3 , 5, 7)
plt.plot( x, f )
plt.show()
Ejemplo 2)
Ejemplo 3)
import matplotlib.pyplot as plt
x=[1999, 2001, 2003, 2005, 2007, 2009]
y=[45, 52, 60, 72, 70, 75]
plt.plot(x,y , marker='o', linestyle='--', color='g' )
plt.xlabel('Años')
plt.ylabel('publicaciones')
plt.title('Publicacion por años')
plt.show()
Ejemplo 4) Figuras:
import tkinter as tk
from tkinter import Canvas
form=tk.Tk()
canvas=Canvas(form, width=640, height=480)
canvas.pack()
canvas.create_line(10,20,150,100, fill='red',width=1)
canvas.create_rectangle(100,120,150,150,outline='#000000',
fill='yellow',width=1)
canvas.create_oval(200,200,300,300,outline='blue')
form.mainloop()
Ejemplo 5)
from tkinter import Tk, Label, Button, Entry
form=Tk()
form.title('Titulo')
form.geometry('400x200')
lbl1 = Label(form,text='Primer numero : ')
lbl1.place(x=10,y=10, width=100,height=30)
lbl2 = Label(form,text='Segundo numero : ')
lbl2.place(x=10,y=50, width=100,height=30)
lbl3 = Label(form,text='Resultado : ')
lbl3.place(x=10,y=120, width=100,height=30)
txt1 = Entry(form, bg='Dark turquoise')
txt1.place(x=120,y=10,width=100,height=30)
txt2 = Entry(form, bg='Dark turquoise')
txt2.place(x=120,y=50,width=100,height=30)
txt3 = Entry(form, bg='Dark turquoise')
txt3.place(x=120,y=120,width=100,height=30)
def suma():
num1 = txt1.get()
num2 = txt2.get()
res = int(num1)+int(num2)
txt3.delete(0,'end')
txt3.insert(0,res)
btn1 = Button(form,text='SUMAR', command=suma)
btn1.place(x=250,y=80,width=100,height=30)
form.mainloop()
Grafico animado:
from tkinter import Tk, Frame, Button, Label, ttk
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animacion
fig, ax = plt.subplots(facecolor='#05FFFF')
plt.title('Grafica', color='black',size=16,family='arial')
x=np.arange(0,4*np.pi,0.01)
line, =ax.plot(x,np.cos(x), color='m', marker='o', linestyle='dotted',
linewidth=5,markersize=1, markeredgecolor='m')
def animate(i):
line.set_ydata(np.cos(x+i/40))
return line,
def iniciar():
global ani
ani = animacion.FuncAnimation(fig,animate, interval=20,blit=True, save_count=10)
canvas.draw()
def pausar():
ani.event_source.stop()
def reanudar():
ani.event_source.start()
form=Tk()
form.geometry('642x535')
form.wm_title('Grafica Matplotlib Animation')
form.minsize(width=642,height=535)
frame=Frame(form, bg='white',bd=3)
frame.pack(expand=1,fill='both')
canvas=FigureCanvasTkAgg(fig, master=frame)
canvas.get_tk_widget().pack(padx=5,pady=5,expand=1,fill='both')
Button(frame,text='Grafica Datos',width=15,bg='purple4',fg='white',command=iniciar,
).pack(pady=5,side='left',expand=1)
Button(frame, text='Pausar',width=15,bg='salmon',fg='white',
command=pausar).pack(pady=5,side='left',expand=1)
Button(frame, text='Reanudar', width=15, bg='green',fg='white',
command=reanudar).pack(pady=5, side='left',expand=1)
form.config(bg='dark turquoise')
form.mainloop()
from tkinter import Tk, Label, Button, Entry
form=Tk()
form.title('Titulo')
form.geometry('400x200')
lbl1 = Label(form,text='Primer numero : ')
lbl1.grid(row=0,column=0, padx=6,pady=6)
lbl2 = Label(form,text='Segundo numero : ')
lbl2.grid(row=1,column=0, padx=6,pady=6)
lbl3 = Label(form,text='Resultado : ')
lbl3.grid(row=2,column=0, padx=6,pady=6)
txt1 = Entry(form, bg='Dark turquoise')
txt1.grid(row=0, column=1,padx=6,pady=6)
txt2 = Entry(form, bg='Dark turquoise')
txt2.grid(row=1, column=1,padx=6,pady=6)
txt3 = Entry(form, bg='Dark turquoise')
txt3.grid(row=2,column=1,padx=6,pady=6)
def suma():
num1 = txt1.get()
num2 = txt2.get()
res = int(num1)+int(num2)
txt3.delete(0,'end')
txt3.insert(0,res)
btn1 = Button(form,text='SUMAR', command=suma)
btn1.grid(row=2, column=2,padx=6,pady=6)
form.mainloop()
Listas: