Sabemos que al considerar una función $f(x)$ podemos graficar ésta dando algunos valores representativos a la variable independiente $x$ para ver el comportamiento de $f(x)$. Por ejemplo, considerando la función $f(x)=x^{2}$ podemos considerar los valores
lo cual nos brinda algunas parejas ordenadas que podemos graficar. A continuación graficaremos los puntos obtenidos, para ello importaremos el módulo necesario, que en este caso es matplotlib.pyplot
; notemos que después de importar el módulo colocamos as
el cual nos permite asignar un alias cuando ocupemos sentencias referentes a dicho módulo (el alias puede ser cualquiera, en nuestro caso colocamos mplot
.). Después necesitaremos de dos sentencias básicas: mplot.plot()
para graficar y mplot.show()
para mostrar la gráfica creada. Dentro de los parámetros de mplot.plot()
colocamos las coordenadas $(x,y)$ del punto que deseamos graficar seguido de marker=""
para el tipo de marcador que deseamos utilizar; asimismo podemos agregar el color que deseamos utilizando color=""
import matplotlib.pyplot as mplot
mplot.plot(-2,4, marker="o", color="r")
mplot.plot(-1,1, marker="o", color="g")
mplot.plot(0,0, marker="v", color="c")
mplot.plot(1,1, marker="^", color="b")
mplot.plot(2,4, marker="*", color="m")
mplot.show()
Ahora bien, todos los puntos los pondremos en un sólo formato con marker="o"
y de color negrocolor="k"
. Dibujaremos ahora los ejes cartesianos, para ello emplearemos un bucle while
.
mplot.plot(x,0, marker = "_", color = "k")
, recordemos que sobre el eje $x$ el valor de la ordenada $y$ es cero. Después dibujaremos repetidamente ese punto haciendo que el valor de $x$ aumente para que, de este modo, pueda dibujarse la línea.mplot.plot(0,y, marker = "_", color = "k")
. Es preciso colocar un incremento dentro del bucle para que éste no sea un bucle infinito, además, el incremento será muy pequeño para realizar el dibujo de muchísimos puntos que a nuestra vista parecerán una línea.# eje y
# inicialiamos la variable y
y = -1
# empleamos el bucle sobre el rango de valores en que estará el eje
while y <= 4 and y >= -1:
mplot.plot(0,y, marker="|", color="k")
y += 0.05
# ---------------------------------------------------------------------
# eje x
x = -2
while x <= 2 and x >= -2:
mplot.plot(x,0, marker="_", color="k")
x += 0.05
# ---------------------------------------------------------------------
mplot.plot(-2,4, marker="o", color="k")
mplot.plot(-1,1, marker="o", color="k")
mplot.plot(0,0, marker="o", color="k")
mplot.plot(1,1, marker="o", color="k")
mplot.plot(2,4, marker=".", color="k")
mplot.show()
Ahora, emplearemos la misma idea de cómo dibujamos los ejes para dibujar la gráfica de la función $f(x)=x^{2}$. Para evitar confución entre el manejo de la variables, reservaremos exclusivamente x
y y
para los ejes. De tal manera, si deseamos graficar $f(x)=y$, emplearemos el ajuste de las variables como $f(u)=v$. Así, la función que deseamos graficar es $f(u)={u^{2}}$:
# eje x
y = -1
while y <= 4 and y >= -1:
mplot.plot(0,y, marker="|", color="k")
y += 0.05
# ---------------------------------------------------------------------
# eje x
x = -2
while x <= 2 and x >= -2:
mplot.plot(x,0, marker="_", color="k")
x += 0.05
# ---------------------------------------------------------------------
# puntos obtenidos anteriormente
mplot.plot(-2,4, marker="o", color="r")
mplot.plot(-1,1, marker="o", color="r")
mplot.plot(0,0, marker="o", color="r")
mplot.plot(1,1, marker="o", color="r")
mplot.plot(2,4, marker="o", color="r")
# dibujo de la función f(u)=u^2
u = -2
while u <= 2 and u >= -2:
mplot.plot(u,u ** 2, marker=".", color = "k")
u += 0.05
mplot.show()
Nótese que aún no conseguimos que la función tome la forma de una curva, continúa viéndose como muchos puntos consecutivos. Para marker="."
tenemos el tipo de marcador punto como puede verse en el gráfico anterior, dado que éstos puntos se ven un poco gruesos utilizaremos en cambio marker=","
el cual marca un tipo de pixel.
# eje x
y = -1
while y <= 4 and y >= -1:
mplot.plot(0,y, marker="|", color="k")
y += 0.05
# ---------------------------------------------------------------------
# eje x
x = -2
while x <= 2 and x >= -2:
mplot.plot(x,0, marker="_", color="k")
x += 0.05
# ---------------------------------------------------------------------
# puntos obtenidos anteriormente
mplot.plot(-2,4, marker="o", color="r")
mplot.plot(-1,1, marker="o", color="r")
mplot.plot(0,0, marker="o", color="r")
mplot.plot(1,1, marker="o", color="r")
mplot.plot(2,4, marker="o", color="r")
# dibujo de la función f(u)=u^2
u = -2
while u <= 2 and u >= -2:
mplot.plot(u,u ** 2, marker=",", color = "k")
u += 0.005
mplot.show()
Podemos graficar otras funciones como:
# eje x
y = -3
while y <= 5 and y >= -3:
mplot.plot(0,y, marker="|", color="k")
y += 0.05
# ---------------------------------------------------------------------
# eje x
x = -2
while x <= 2 and x >= -2:
mplot.plot(x,0, marker="_", color="k")
x += 0.05
# ---------------------------------------------------------------------
# Algunos puntos
mplot.plot(0,1, marker="o", color="r")
mplot.plot(-0.5,0, marker="o", color="r")
# dibujo de la función f(u)=u^2
u = -2
while u <= 2 and u >= -2:
mplot.plot(u,2 * u + 1, marker=",", color = "b")
u += 0.005
mplot.show()
Ahora bien para acceder a más funciones matemáticas importaremos el módulo math
y graficaremos las funciones $f(x)=sen(x)$, $g(x)=\sqrt{x}$ y $h(x)=ln(x)$:
import math
# ---------------------------------------------------------------------
# eje x
y = -1.5
while y <= 1.5 and y >= -1.5:
mplot.plot(0,y, marker="|", color="k")
y += 0.05
# ---------------------------------------------------------------------
# eje x
x = -2
while x <= 2 and x >= -2:
mplot.plot(x,0, marker="_", color="k")
x += 0.05
# ---------------------------------------------------------------------
# dibujo de la función f(u)=sen(u)
u1 = -2
while u1 <= 2 and u1 >= -2:
mplot.plot(u1,math.sin(u1), marker=",", color = "b")
u1 += 0.005
# dibujo de la función g(u)=sqrt(u)
u2 = 0
while u2 <= 2 and u2 >= -2:
mplot.plot(u2,math.sqrt(u2), marker=",", color = "r")
u2 += 0.005
# dibujo de la función h(u)=ln(u)
u3 = 0.5
while u3 <= 2 and u3 >= -2:
mplot.plot(u3,math.log(u3), marker=",", color = "m")
u3 += 0.005
mplot.show()
Podemos dibujar una circunferencia
# eje x
y = -2
while y <= 2 and y >= -2:
mplot.plot(0,y, marker="|", color="k")
y += 0.05
# ---------------------------------------------------------------------
# eje x
x = -2
while x <= 2 and x >= -2:
mplot.plot(x,0, marker="_", color="k")
x += 0.05
# ---------------------------------------------------------------------
# dibujo de la función f(u)=sen(u)
u4 = -1
while u4 <= 1 and u4 >= -1:
mplot.plot(u4, math.sqrt(1 - u4 ** 2), marker=".", color = "b")
u4 += 0.005
u5 = -1
while u5 <= 1 and u5 >= -1:
mplot.plot(u5, - math.sqrt(1 - u5 ** 2), marker=".", color = "b")
u5 += 0.005
mplot.show()
El método anterior plantea un problema pues al realizar muchas iteraciones el tiempo de copilación aumentará. De hecho, el método empleado anteriormente es más ilustrativo que útil; a continuación utilizaremos el módulo sympy
. Para ello
from sympy import symbols
from sympy.plotting import plot
Ahora, recordemos que utilizamos x
en Python como una variable a la cual podemos asignarle un valor e ir cambiando ese valor, pero en todo momento el valor que pueda tomar x
debe estar declarado. Sin embargo, sabemos que en matemáticas podemos utilizar la variable $x$ que represente un número cualquiera sin especificar cuál es. Para trabajar con variables matemáticas en Python utilizaremos symbols("")
. Por ejemplo, si deseamos considerar a x
como una variable matemática hacemos que
x = symbols("x")
Notemos que estamos trabajando con x
sin haber declarado un valor previo como lo haciamos si deseabamos trabajar con la variable x
dentro de Python. Ahora si podemos utilizar x
como una variable del álgebra, por ejemplo podemos efectuar cálculos como $x+x$, $x\cdot x$, etcétera. En efecto
print(x + x + x)
print(x + 2)
print(x * x * 2)
3*x x + 2 2*x**2
Ahora bien, podemos graficar funciones de una manera más sencilla, por ejemplo
x = symbols("x")
plot(x ** 2, (x, -2, 2), title="Función cuadrática", line_color="red")
<sympy.plotting.plot.Plot at 0x209042b8388>
donde dentro de plot()
colocamos primero la función a graficar y después, entre paréntesis, colocamos el símbolo referente a la variable independiente matemática, seguido del intervalo donde graficaremos. Podemos graficar más funciones en un mismo plano:
plot(x ** 2, x + 1,(x, -2, 2))
<sympy.plotting.plot.Plot at 0x20903b9dac8>
o también agrupar las funciones a graficar junto con sus valores referentes al dominio de graficación entre paréntesis, esto es
plot( (x ** 2, (x, -2, 2)), (x + 1, (x, 0, 3)), line_color = "red" )
<sympy.plotting.plot.Plot at 0x20626d0f148>
En realidad el tercer método es una afinación del primer método, de tal manera volveremos a utilizar el módulo matplotlib
y además agregaremos el módulo numpy
. Bien, lo primero que necesitamos para graficar una función es definir el dominio de graficación, para ello utilizamos
import matplotlib.pyplot as mplot
import numpy as np
# definimos el rango adecuado
x = np.arange(-1,1, 0.01)
donde el rango de graficación será en el intervalo sobre $x$ de $[-1,1)$ con un incremento de $0.01$. Prosigamos graficando la función $f(x)=x^{3}$, para ello
x = np.arange(-1,1, 0.01)
# definimos la función f(x)=y
y = x ** 3
# creamos la gráfica
mplot.plot(x, y)
# agregamos algunos puntos
mplot.plot(0,0, marker="o", color="r")
mplot.plot(1,1, marker="o", color="r")
mplot.plot(-1,-1, marker="o", color="r")
# mostramos la cuadrícula en el gráfico (opcional)
mplot.grid()
# mostramos la gráfica
mplot.show()
Otro ejemplo:
# Definimos el rango de graficación
x = np.arange(-5,5, 0.01)
# definimos la función f(x)=y
y = np.sin(x)
# creamos la gráfica
mplot.plot(x, y)
# mostramos la cuadrícula en el gráfico (opcional)
mplot.grid()
# mostramos la gráfica
mplot.show()
Podemos agregar más funciones a la gráfica, por ejemplo
# Definimos el rango de graficación
x = np.arange(-5,5, 0.01)
# definimos la primer función y1
y1 = np.sin(x)
# definimos la segunda función y2
y2 = np.cos(x)
# creamos la gráfica
mplot.plot(x, y1)
mplot.plot(x, y2)
# mostramos la cuadrícula en el gráfico (opcional)
mplot.grid()
# mostramos la gráfica
mplot.show()
Podemos cambiar el dominio de graficación de cada función:
# Definimos el rango de graficación de la primer función
x1 = np.arange(-3,3, 0.01)
# Definimos el rango de graficación de la segunda función
x2 = np.arange(0,3, 0.01)
# definimos la primer función y1
y1 = x1 ** 2
# definimos la segunda función y2
y2 = 2 * x2
# creamos la gráfica
mplot.plot(x1, y1)
mplot.plot(x2, y2)
# mostramos un punto
mplot.plot(2,4, marker = "o", color = "k")
# mostramos la cuadrícula en el gráfico (opcional)
mplot.grid()
# mostramos la gráfica
mplot.show()
Ahora, es posible agregar el título de un gráfico correspondiente, esto lo conseguimos utilizando labe=""
dentro de mplot.plot()
y para que dicho título se muestre usamos mplot.legend()
:
x1 = np.arange(-3,3, 0.01)
x2 = np.arange(0,3, 0.01)
y1 = x1 ** 2
y2 = 2 * x2
# creamos la gráfica con los títulos correspondientes (podemos utilizar látex)
mplot.plot(x1, y1, label = "$f(x)=x^{2}$")
mplot.plot(x2, y2, label = "$g(x)=2x$")
# mostramos un punto
mplot.plot(2,4, marker = "o", color = "k", label = "$P(2,4)$")
# mostramos la cuadrícula en el gráfico (opcional)
mplot.grid()
# mostramos la gráfica con los títulos
mplot.legend()
mplot.show()