In [1]:
#Librerias necesarias para ejecutar el cdigo
import matplotlib.pyplot as ploty
import numpy as np
#Definicion del espacio de graficacion de 0 a 7 con 10001 posiciones entre elos
x=np.linspace(0, 7, 10001)
#Definicion de la funcion
f=1-np.exp(-x)-x/5
#Proceso de calculo de cuando x=0;
zero=1
coef=0
for i in range(1,10001):
if f[i]>0:
if f[i]<zero:
zero=f[i]
coef=i
#t contiene el valor cuando x=0
t=x[coef]
#Graficacion de las funciones definidas anteriormente
ax=ploty.plot(x,f,label=r'$F(x)=1-\exp{(-x)}-\frac{1}{5}x$')
ploty.legend(loc=4)
#Titulos y ejes
ploty.suptitle("Ecuacion del limite de Wien")
ploty.ylabel("F(x)")
ploty.xlabel(r'$x=\frac{hc}{\lambda KT}$')
#Codigo para centrar ejes
ax = ploty.gca() # gca stands for get current axis
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))
#Codigo para graficar las lineas y colocar la anotacion con x=0
ploty.plot([t, t], [0, 0.48], color='blue', linewidth=2.5, linestyle="--")
ploty.scatter([t, ], [0.48, ], 50, color='blue')
ploty.annotate(t,xy=(t,0.5), xycoords='data',
xytext=(+1, +1), textcoords='offset points', fontsize=16)
#Comando para mostrar las graficas
ploty.show()
import numpy as num
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plot
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.backend_bases import key_press_handler
import scipy.constants as spc
import sys
if sys.version_info[0] < 3:
import Tkinter as Tk
else:
import tkinter as Tk
home = Tk.Tk()
home.wm_title("Atenuacion Guia de Onda")
#Declaracion de limites----------------------------------------------
f = Figure()
plota = f.add_subplot(111)
#Declaracion de Variables--------------------------------------------
a = num.arange(1e-6, 1, 1e-5)
b = (1/((a/2)**0.5))*(1+(a**2))/((1-(a**2))**0.5)*(1/((120**0.5)*(12**3.5)))
#Se les asigna el label correspondiente a cada eje-------------------
plota.plot(a,b)
plota.set_xlabel(r'$\lambda_0/\lambda_c=\lambda_0/2b$')
plota.set_ylabel(r'$K_{gi}b^{3/2}$',rotation='horizontal')
plota.axis([0, 1,0, 10e-5])
plota.set_yticklabels(['0','2','4','6','8',r'$10\times 10{-5}$'])
# Muestra la grafica-------------------------------------------------
plota.set_title('Grafico de Atenuacion de Guia de Onda\n.')
f.tight_layout()
plota.grid(True)
canvas = FigureCanvasTkAgg(f,master=home)
canvas.show()
canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)
toolbar = NavigationToolbar2TkAgg(canvas, home)
toolbar.update()
canvas._tkcanvas.pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)
R = "right"
L = "left"
x = 0.4
q = num.linspace(0,1,2)
var = Tk.StringVar()
label = Tk.Label(home, textvariable=var, fg="black", bg="white", font = "Helvetica 14 bold italic")
var.set("Utilice las flechas horizontales del teclado para desplazarce por la grafica")
def on_key_event(event):
if event.key==R:
global a
global b
global x
x = x + 0.01
if x<0.01:
x = 0.01
y = (1/((0.01/2)**0.5))*(1+(0.01**2))/((1-(0.01**2))**0.5)*(1/((120**0.5)*(12**3.5)))
pass
else:
y = (1/((x/2)**0.5))*(1+(x**2))/((1-(x**2))**0.5)*(1/((120**0.5)*(12**3.5)))
if x>0.99:
x = 0.99
y = (1/((0.99/2)**0.5))*(1+(0.99**2))/((1-(0.99**2))**0.5)*(1/((120**0.5)*(12**3.5)))
pass
else:
y = (1/((x/2)**0.5))*(1+(x**2))/((1-(x**2))**0.5)*(1/((120**0.5)*(12**3.5)))
n = num.linspace(x,x,2)
plota.cla()
plota.plot(a,b)
plota.set_xlabel(r'$\lambda_0/\lambda_c=\lambda_0/2b$')
plota.set_ylabel(r'$K_{gi}b^{3/2}$',rotation='horizontal')
plota.axis([0, 1,0, 10e-5])
plota.set_yticklabels(['0','2','4','6','8',r'$10\times 10{-5}$'])
# Muestra la grafica-------------------------------------------------
plota.set_title('Grafico de Atenuacion de Guia de Onda\n.')
f.tight_layout()
plota.grid(True)
plota.plot(n,q,'r')
canvas.draw()
var.set("Valores sobre la curva\t Kgi*b^(3/2) = "+str(x)+r". lambda_0/2b = "+str(y))
elif event.key==L:
global a
global b
global x
x = x - 0.01
if x<0.01:
x = 0.01
y = (1/((0.01/2)**0.5))*(1+(0.01**2))/((1-(0.01**2))**0.5)*(1/((120**0.5)*(12**3.5)))
pass
else:
y = (1/((x/2)**0.5))*(1+(x**2))/((1-(x**2))**0.5)*(1/((120**0.5)*(12**3.5)))
if x>0.99:
x = 0.99
y = (1/((0.99/2)**0.5))*(1+(0.99**2))/((1-(0.99**2))**0.5)*(1/((120**0.5)*(12**3.5)))
pass
else:
y = (1/((x/2)**0.5))*(1+(x**2))/((1-(x**2))**0.5)*(1/((120**0.5)*(12**3.5)))
n = num.linspace(x,x,2)
plota.cla()
plota.plot(a,b)
plota.set_xlabel(r'$\lambda_0/\lambda_c=\lambda_0/2b$')
plota.set_ylabel(r'$K_{gi}b^{3/2}$',rotation='horizontal')
plota.axis([0, 1,0, 10e-5])
plota.set_yticklabels(['0','2','4','6','8',r'$10\times 10{-5}$'])
# Muestra la grafica-------------------------------------------------
plota.set_title('Grafico de Atenuacion de Guia de Onda\n.')
f.tight_layout()
plota.grid(True)
plota.plot(n,q,'r--')
canvas.draw()
var.set("Valores sobre la curva\t Kgi*b^(3/2) = "+str(x)+r". lambda_0/2b = "+str(y))
else:
pass
key_press_handler(event, canvas, toolbar)
canvas.mpl_connect('key_press_event', on_key_event)
label.pack(side="bottom", ipady=20)
Tk.mainloop()
In [ ]: