Gráfica de puntos en Python 3

Ejercicio

(Tomado del ejercicio 1.3. de Bracho (2009), página 5.) Encuentre los diferentes puntos en $\mathbb{R}^2$ dados por sus coordenadas. Los puntos son: $(3,2)$, $(-1,5)$, $(0,-4)$, $(-1,-2)$ y $(\frac{1}{2},-\frac{3}{2})$.

El enunciado del ejercicio original era:

Encuentra diferentes puntos en el plano dados por sus coordenadas (por ejemplo, el (3,2), el (-1,5), ...

Respuesta

(Respuesta propuesta por Ludger O. Suárez-Burgoa, 27 junio 2016.) Primero vamos a poner los puntos en una tabla.

Punto Coordenada $\mathrm{x}$ Coordenada $\mathrm{y}$
1 $3$ $2$
2 $-1$ $5$
3 $0$ $-4$
4 $-1$ $-2$
5 $\frac{1}{2}$ $-\frac{3}{2}$

El libro de Bracho (2009), que por cierto es muy bueno, resuelve la mayoría de sus problemas geométricos y elabora sus gráficas en el programa Cinderella. Sin embargo, aquí queremos resolver aplicando Python 3. La solución es la siguiente.

In [59]:
import sympy
import sympy.geometry as spg

ptsList =[spg.Point(3,2), spg.Point(-1,5), spg.Point(0,-4), \
                      spg.Point(-1,-2), spg.Point(1/2.,-3/2.)]

print("Mostramos los puntos para verificar que son correctos:")
for el in ptsList:
    print(el)
Mostramos los puntos para verificar que son correctos:
Point2D(3, 2)
Point2D(-1, 5)
Point2D(0, -4)
Point2D(-1, -2)
Point2D(1/2, -3/2)

Hemos usado el módulo de sympy porque tiene la opción de trabajar con objetos de geometría básicos como puntos, rectas, segmentos, polígonos irregulares y regulares, círculos, elipses; además que posibilita hacer operaciones entre estos objetos como por ejemplo verificar si tres puntos son colineales, la intersección de segmentos y líneas.

Ahora graficamos los puntos en $\mathbb{R}^2$ con el módulo pyplot de matplotlib.

In [60]:
%matplotlib inline
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
for i, pt in enumerate(ptsList):
    x = list(pt)[0]
    y = list(pt)[1]
    ax.scatter(x, y)
    ann ='$P_'+str(i+1)+'$'
    ax.annotate(ann, (x,y))

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))

plt.axis('equal')
plt.show()

Referencias

J. Bracho, 2009. Introducción analítica a las geometrías. Fondo de Cultura Económica: México DF.