Sei sulla pagina 1di 14

UNIVERSIDAD DE EL SAVADOR ANALISIS NUMERICO - ANN115 M.SC. E ING.

WILBER CALDERON
FACULTAD DE INGENIERIA Y ARQUITECTURA
ESCUELA DE INGENIERIA ELECTRICA

Guia de laboratorio #
4
Introducción a los
módulos y gráficas en
Python

Objetivo general

 Conocer lo módulos en Python y utilizarlos de forma correcta a la hora de realizar un programa.

Objetivos especificos

 Aprender a usar módulos en Python.

 Graficar en Python.

Introducción
En Python es usual trabajar con módulos, el equivalente de estos en otros lenguajes de programación
son las conocidas librerías, sin embargo, todos los elementos que conforman una librería quedan en
espacios d nombre global. Esto hace que al incluir varias el código crece y se corre el riesgo de
contaminar los espacios de nombre o colisionarlos, lo cual ocurre cuando un nombre se repite. El uso de
módulos de Python organiza de mejor manera los Códigos y evita los problemas anteriormente
mencionados.

GUIA DE LABORATORIO 4: INTRODUCCIÓN A LOS MODULOS Y LAS GRAFICAS EN PYTHON.


UNIVERSIDAD DE EL SAVADOR ANALISIS NUMERICO - ANN115 M.SC. E ING. WILBER CALDERON
FACULTAD DE INGENIERIA Y ARQUITECTURA
ESCUELA DE INGENIERIA ELECTRICA

Importación de módulos en Python


Las dos maneras más comunes para importar un módulo son:

import <nombre del modulo> y from <nombre del modulo> import <lista de nombres>

Veremos ahora las diferencias de cada una usando el módulo math, el cual es un módulo que Python
trae por defecto.
import math math.sin(math.pi)

Out[16]: 1.2246467991473532e-
16 

math.ceil(math.e) 
Out[17]: 3.0 

math.sin(math.radians(90)) 
Out[18]: 1.0 

Vemos que la primera línea no importa directamente las


funciones del módulo, sino que debemos utilizar el nombre math para acceder a ellas, tanto para las
funciones como para las constantes que el módulo tiene definidas. Es decir, que, en el espacio de
nombre actual, solo hemos metido el nombre del módulo, no de las funciones o variables del mismo.
Podemos darle un nombre local a una función para
usarla de manera más In [20]: m = math.sin  cómoda:

In [21]: m(9) 
Out[21]: 0.4121184852417566 

In [26]: M = math In 

[27]: M.sin(9) 
Out[27]: 0.4121184852417566

La manera más recomendada de importar funciones determinadas ocupa la palabra clave from. Un
ejemplo es el siguiente:
In [1]: from math import sin, pi 

In [2]: sin(9) 
Out[2]: 0.4121184852417566 

In [3]: sin(2*pi) 
Out[3]: -2.4492935982947064e-16'
GUIA DE LABORATORIO 4: INTRODUCCIÓN A LOS MODULOS Y LAS GRAFICAS EN PYTHON.
UNIVERSIDAD DE EL SAVADOR ANALISIS NUMERICO - ANN115 M.SC. E ING. WILBER CALDERON
FACULTAD DE INGENIERIA Y ARQUITECTURA
ESCUELA DE INGENIERIA ELECTRICA

Si escribimos cos(9) nos dará el error NameError: name 'cos' is not defined porque al espacio


de nombre actual solo hemos invocado los nombres de las funciones sin() y de la constante pi. Si lo que
deseamos es usar todas las funciones y variables de un módulo, podemos traerlas todas de la siguiente
manera:

In [7]: from math import* 

In [8]: sin(9) 
Out[8]: 0.4121184852417566 

In [9]: sin(2*pi) 
Out[9]: -2.4492935982947064e-
16 

In [10]: cos(9) 
Out[10]: -0.9111302618846769

El problema de la forma anterior es si se importa más de un módulo que definan funciones o constantes
con el mismo nombre. Tomemos el caso de los módulos math y cmath, ambos con funciones con el
nombre sin():

In [17]: from cmath import* # Modulo para nuemros compl
ejos

In [18]: from math import* # Modulo para numeros reales

In [19]: c = 1+1j # Numero complejo

In [20]: degrees(phase(c)) # Angulo de c en grados
Out[20]: 45.0

In [21]: sin(abs(c)) # Seno de la magnitud de c (numero 
real)
Out[21]: 0.9877659459927356

In [22]: sin(c) # Seno de un numero complejo

GUIA DE LABORATORIO 4: INTRODUCCIÓN A LOS MODULOS Y LAS GRAFICAS EN PYTHON.


UNIVERSIDAD DE EL SAVADOR ANALISIS NUMERICO - ANN115 M.SC. E ING. WILBER CALDERON
FACULTAD DE INGENIERIA Y ARQUITECTURA
ESCUELA DE INGENIERIA ELECTRICA

La última línea nos dará el error TypeError: can't convert complex to float. ¿Qué sucedió? Se


importaron ambos módulos. Prueba de ello es que las funciones degrees() y phase(), cada una particular
del módulo math y cmath, respectivamente, funcionaron. Entonces, ¿por qué da error la llamada de la
función sin()? La razón es que Python reconoce con el nombre sin la última función importada con ese
nombre, es decir, la de math.

En este sentido, con solo invertir el orden con los que se importan los módulos, el código debería
funcionar. Por supuesto, esta no es la manera más adecuada de dar solución al problema. La solución
será el uso de la palabra clave as.

El siguiente ejemplo hace uso de ella:

In [26]: import math as M # Modulo para numeros reales 

In [27]: import cmath as CM # Modulo para numeros complejos 

In [28]: c = 1+1j # Numero complejo 

In [29]: M.degrees(CM.phase(c)) # Angulo de c en grados
Out[29]: 45.0 

In [30]: M.sin(abs(c)) # Seno de la magnitud de c (numero real) 
Out[30]: 0.9877659459927356 

In [31]: CM.sin(c) # Seno de un numero complejo 
Out[31]: (1.2984575814159773+0.6349639147847361j

Por
último, se
presenta un ejemplo de uso de la función dir(), la cual cuando se llama sin argumentos regresa una lista
con los nombres actuales y cuando se llama con una argumento, regresa los atributos del objeto al que
pertenece el argumento.

In [41]: import cmath as CM 

In [42]: dir(CM) 
Out[42]: ['__doc__', '__name__', '__package__', 'acos', 'acosh',
         'asin', 'asinh', 'atan', 'atanh', 'cos', 'cosh', 'e',
         'exp', 'isinf', 'isnan', 'log', 'log10', 'phase', 'pi',
         'polar', 'rect', 'sin', 'sinh', 'sqrt', 'tan', 'tanh']

GUIA DE LABORATORIO 4: INTRODUCCIÓN A LOS MODULOS Y LAS GRAFICAS EN PYTHON.


UNIVERSIDAD DE EL SAVADOR ANALISIS NUMERICO - ANN115 M.SC. E ING. WILBER CALDERON
FACULTAD DE INGENIERIA Y ARQUITECTURA
ESCUELA DE INGENIERIA ELECTRICA

Módulos NumPy y Matplotlib

Los módulos Numpy y Matplotlib se especializan en métodos útiles para ingenieros y científicos,
implementados muchos métodos que facilitan el análisis numérico. En particular, Numpy se especializa
en el manejo arreglos de N dimensiones mientras que Matplotlib contiene métodos eficientes para la
presentación gráfica de resultados.

Con NumPy lo que obtenemos es la facilidad de aplicar funciones a un arreglo de números, cosa que no
podíamos hacer en Python puro.

Por ejemplo, la siguiente línea:

In [48]: X = range(-pi, pi, 0.001)

No correrá, primero porque el nombre pi no está definido y segundo porque la función range() solo
admite enteros.

Otro ejemplo es:

In [51]: from math import sin 

In [52]: x = [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9] 

In [53]: y = sin(x)
Nos
dará
error porque la función sin() no está hecha para ser evaluada en elementos de un vector.

Sin embargo, si utilizamos el módulo NumPy:

In [56]: import numpy as np # Se importa el modulo NumPy 

In [57]: x = np.arange(-np.pi, np.pi, 0.001) # Se crea un vector de datos 

In [58]: y = np.sin(x) # Se evalua el seno elemento a elemento

GUIA DE LABORATORIO 4: INTRODUCCIÓN A LOS MODULOS Y LAS GRAFICAS EN PYTHON.


UNIVERSIDAD DE EL SAVADOR ANALISIS NUMERICO - ANN115 M.SC. E ING. WILBER CALDERON
FACULTAD DE INGENIERIA Y ARQUITECTURA
ESCUELA DE INGENIERIA ELECTRICA

Las ultimas líneas corren sin ningún problema y se parecen a los códigos hechos en octave pues las
variables x y y tienen ahora los datos suficientes para gratificarlos: uno en el eje horizontal y el otro en el
vertical. Lamentablemente, NumPy no tiene los métodos para hacer esto. Es aquí donde nos auxiliamos
del módulo Matplotlib:

In [62]: import matplotlib.pyplot as plt 

In [63]: x = np.arange(-np.pi, np.pi, 0.001) 

In [64]: y = np.sin(x) 

In [65]: plt.plot(x, y) 
Out[65]: [<matplotlib.lines.Line2D at 0x756f410>] 

In [66]: plt.show()

Nos debería mostrar una imagen parecida a la siguiente:

El módulo matplotlib.pyplot es una colección de métodos que funcionan de manera semejante a los de
MATLAB (en nuestro caso, parecidos a los de Octave).

Se presentan a continuación los ejemplos de la guía 1 hechos en Python. Se supondrá que los módulos
NumPy y matplotlib.pyplot ya han sido importados.

Gráfica de una línea recta:

x = np.arange(-10, 10, 1) 

y = 3*x + 1 

plt.plot(x, y) # Grafica de una linea recta 

plt.title("Grafico Lineal")   
plt.grid()
plt.show() 
plt.close()
Gratifica de una

x = np.arange(0, 2*np.pi, 0.001) 
plt.plot(x, np.sin(x))  # Grafica de una senoide 
plt.title("Grafico de una función seno")   
plt.grid() 
plt.show() 
plt.close()

GUIA DE LABORATORIO 4: INTRODUCCIÓN A LOS MODULOS Y LAS GRAFICAS EN PYTHON.


UNIVERSIDAD DE EL SAVADOR ANALISIS NUMERICO - ANN115 M.SC. E ING. WILBER CALDERON
FACULTAD DE INGENIERIA Y ARQUITECTURA
ESCUELA DE INGENIERIA ELECTRICA

Gráfica de una exponencial:

x = np.arange(-10, 10, 0.001) 

y = 10*np.exp(3*x) 

plt.plot(x, y) # Grafica de una exponencial  
plt.title("Grafico de una exponencial")
plt.grid() 
plt.show() 
plt.close()

GUIA DE LABORATORIO 4: INTRODUCCIÓN A LOS MODULOS Y LAS GRAFICAS EN PYTHON.


UNIVERSIDAD DE EL SAVADOR ANALISIS NUMERICO - ANN115 M.SC. E ING. WILBER CALDERON
FACULTAD DE INGENIERIA Y ARQUITECTURA
ESCUELA DE INGENIERIA ELECTRICA

Gráfica de una potencial:

x = np.arange(0, 100, 1) 

y = 1e3*x**2 

plt.plot(x, y) # Grafica de una potencial 
 
plt.grid() 
plt.show() 
plt.close()

GUIA DE LABORATORIO 4: INTRODUCCIÓN A LOS MODULOS Y LAS GRAFICAS EN PYTHON.


UNIVERSIDAD DE EL SAVADOR ANALISIS NUMERICO - ANN115 M.SC. E ING. WILBER CALDERON
FACULTAD DE INGENIERIA Y ARQUITECTURA
ESCUELA DE INGENIERIA ELECTRICA

También se puede dar un mejor formato a los grafico cambiando estilos de línea, marcadores y colores.
Estilos de Líneas +, Cruz Colores (color=):
(linestyle=) ., Punto b, blue
-, Línea Sólida o,Círculo g, green
--, Línea discontinua *, Estrellas r, red
:, Línea punteada p, Pentágonos c, cyan
-., Línea punteada s, cuadrados m, magenta
discontinua. x, Tachados y, yellow
None, Ninguna línea D, Diamantes k, black
h, Hexágonos y w, white
^, Triángulos
Marcadores (marker=):

 Ejemplo:

Dos gráficos sobre el mismo eje:

x = np.arange(0, 10, 0.1) 

y1 = np.sin(x) 
y2 = np.cos(x) 
plt.plot(x, y1, "r-s", label="Seno") 
plt.plot(x, y2, "g:p", label="Coseno")
plt.grid(True) 
plt.xlabel("eje x")
plt.ylabel("eje y") 
plt.title("Graficas seno y coseno") 
plt.legend() 

plt.grids()
plt.show()
plt.close()

GUIA DE LABORATORIO 4: INTRODUCCIÓN A LOS MODULOS Y LAS GRAFICAS EN PYTHON.


UNIVERSIDAD DE EL SAVADOR ANALISIS NUMERICO - ANN115 M.SC. E ING. WILBER CALDERON
FACULTAD DE INGENIERIA Y ARQUITECTURA
ESCUELA DE INGENIERIA ELECTRICA

import numpy as np
Varias graficas en una
import matplotlib.pyplot as plt
sola imagen
x = np.arange(0, 10, 0.001
y1 = x**2
y2 = np.exp(x)

plt.subplot(2, 2, 1)
plt.plot(x, y1, 'r-.',label="y=x^2")
plt.tight_layout()
plt.title("Funcion potencia")
plt.legend()
plt.xlabel("eje x")
plt.ylabel("eje y")
plt.grid(True)

plt.subplot(2, 2, 2)
y2=y2*1e2
plt.plot(x, y2,'g-',label="e^x")
plt.tight_layout()
plt.title("Funcion exponencial")
plt.legend()
plt.xlabel("eje x")
plt.ylabel("eje y")
plt.grid(True)

plt.subplot(2, 2, 3)
plt.plot(x, np.sin(x) + 2*np.cos(x),'k:',label="y=sin(x)+2cos(x)")
plt.tight_layout()
plt.title("Funcion senoidal")
plt.legend()
plt.xlabel("eje x")
GUIA DE LABORATORIO 4: INTRODUCCIÓN A LOS MODULOS Y LAS GRAFICAS EN PYTHON.
plt.ylabel("eje y")
plt.grid(True)
UNIVERSIDAD DE EL SAVADOR ANALISIS NUMERICO - ANN115 M.SC. E ING. WILBER CALDERON
FACULTAD DE INGENIERIA Y ARQUITECTURA
ESCUELA DE INGENIERIA ELECTRICA

Algunas otras funciones con las cuales cuenta matplotlib:

Histogramas:

import numpy as np
import matplotlib.pyplot as plt
#Definir los datos
a = [22,55,62,45,21,22,34,42,42,4,2,100,95,85,55,55,60,70,65,55,71,45,80,75,65,
54,44,43,42,48]
bins = [0,20,40,60,80,100]
#Configurar las características del gráfico
plt.hist(a, bins,edgecolor='black', color = 'blue')
#Definir título y nombres de ejes
plt.title('Histograma')
plt.ylabel('Eje Y')
plt.xlabel('Eje X')
#Mostrar figura
plt.grid(True)
plt.show()
plt.close()

GUIA DE LABORATORIO 4: INTRODUCCIÓN A LOS MODULOS Y LAS GRAFICAS EN PYTHON.


UNIVERSIDAD DE EL SAVADOR ANALISIS NUMERICO - ANN115 M.SC. E ING. WILBER CALDERON
FACULTAD DE INGENIERIA Y ARQUITECTURA
ESCUELA DE INGENIERIA ELECTRICA

Gráfico circular:

import matplotlib.pyplot as plt

#Definir los datos
ls=['Mango', 'Fresa' , 'Naranja' , 'Sandia' , 'Uva']
sizes= [40,15,20,10,15]
colores = ['green','red','orange','yellow','purple']
explode=(0.6,0,0,0,0)
#Configurar las características del gráfico
plt.pie(sizes, labels=ls, colors=colores, startangle=90, shado
w=True, autopct='%1.1f%%')
axis('equal')
#Definir título
plt.title('Gráfico circular')
#Mostrar figura
plt.show()
plt.close()

figuras en 3D:

#importando modulos
import numpy as np
import matplotlib.pyplot as plt
#creando figura
fig.plt.figure()
#definiendo ejes 3d
ax=plt.axes(projection="3d")
#x(t)=2*cos(3*t)
#y(t)=(x**2)*sen(t)
#z(t)=t
#asignando valores de la funcion parametrica
z=np.linspace(0,10,50)
GUIA DE LABORATORIO 4: INTRODUCCIÓN A LOS MODULOS Y LAS GRAFICAS EN PYTHON.
x=np.cos(z)
y=2*np.sin(z)
#ploteo de la figura
ax.plot3D(x,y,z, 'g-.',label='curva parametrica')
UNIVERSIDAD DE EL SAVADOR ANALISIS NUMERICO - ANN115 M.SC. E ING. WILBER CALDERON
FACULTAD DE INGENIERIA Y ARQUITECTURA
ESCUELA DE INGENIERIA ELECTRICA

Asignaciones de laboratorio.
 Desarrollar la guía de laboratorio.

GUIA DE LABORATORIO 4: INTRODUCCIÓN A LOS MODULOS Y LAS GRAFICAS EN PYTHON.


UNIVERSIDAD DE EL SAVADOR ANALISIS NUMERICO - ANN115 M.SC. E ING. WILBER CALDERON
FACULTAD DE INGENIERIA Y ARQUITECTURA
ESCUELA DE INGENIERIA ELECTRICA

Asignaciones ex aula
 Demuestre el proceso de instalación de los módulos usados en la guía.
5
 Teniendo la siguiente función compleja H= haga las graficas en dos ejes separados
1+ jx
(usando la función subplot). De su magnitud en decibelios (20Log(|H|)) y de su fase en grados.
Usados ejes semilogarítmicos.
 Haga una función que haga la gráfica de y=A*B^(C*x) donde A, B y C son valores que pasaran a
la función. Así como también los límites de la variable “X” y el número de puntos a graficar,
donde B>0.
 Realizar un grafico utilizando la función contour, dejar los comentarios necesarios para la
explicación del código.
 Realizar un gráfico utilizando la función treamplot que es una función de trazado de secuencia, o
trazado aerodinámico, se utiliza para mostrar campos vectoriales 2D.

Bibliografía

https://matplotlib.org/index.html

https://matplotlib.org/3.2.1/api/pyplot_summary.html

https://www.youtube.com/watch?v=-H_02bZsvKw

GUIA DE LABORATORIO 4: INTRODUCCIÓN A LOS MODULOS Y LAS GRAFICAS EN PYTHON.

Potrebbero piacerti anche