Linea que une dos puntos

import matplotlib.pyplot as plt
import numpy as np
import math

x1=1
y1=2


x2=4
y2=10

plt.grid()
plt.plot(x1,y1,'ob',label='(x1,y1)')
plt.plot(x2,y2,'or',label='(x2,y2)')
plt.legend()
pl.show()
m = (y2-y1)/(x2-x1)

xi = x1
xf = x2
Nx = 20
dx = (xf-xi)/Nx
for i in range(Nx):
    x = xi + i*dx
    y = y1 + m*(x-x1)
    plt.plot(x,y,'.k')

plt.grid()
plt.plot(x1,y1,'ob',label='(x1,y1)')
plt.plot(x2,y2,'or',label='(x2,y2)')
plt.legend()
def recta(x1,y1,x2,y2):
 m = (y2-y1)/(x2-x1)

 xi = x1
 xf = x2
 Nx = 20
 dx = (xf-xi)/Nx
 for i in range(Nx):
    x = xi + i*dx
    y = y1 + m*(x-x1)
    plt.plot(x,y,'.k')

x1=1
y1=2


x2=4
y2=10

recta(x1,y1,x2,y2)

plt.grid()
plt.plot(x1,y1,'ob',label='(x1,y1)')
plt.plot(x2,y2,'or',label='(x2,y2)')
plt.legend()
from random import *

x3=2
y3=random()*10

yr=y1+m*(x3-x1)
plt.plot(x3,y3,'oy',label='punto aleatorio')
plt.plot(x3,yr,'om',label='punto sobre la recta')

#
x1=1
y1=2


x2=4
y2=10

recta(x1,y1,x2,y2)



plt.grid()
plt.plot(x1,y1,'ob',label='(x1,y1)')
plt.plot(x2,y2,'or',label='(x2,y2)')
plt.legend()
def recta2(x1,y1,x2,y2,x3,y3):
 m = (y2-y1)/(x2-x1)

 xi = x1
 xf = x2
 Nx = 20
 dx = (xf-xi)/Nx
 for i in range(Nx):
    x = xi + i*dx
    y = y1 + m*(x-x1)
    plt.plot(x,y,'.k')

 yr=y1+m*(x3-x1)
 plt.plot(x3,y3,'oy',label='punto aleatorio')
 plt.plot(x3,yr,'om',label='punto sobre la recta')

 plt.grid()
 plt.plot(x1,y1,'ob',label='(x1,y1)')
 plt.plot(x2,y2,'or',label='(x2,y2)')
 plt.legend()

#######################

(x1,y1)=(1,2)
(x2,y2)=(10,4)
(x3,y3)=(3,random()*10)

recta2(x1,y1,x2,y2,x3,y3)
for i in range(5):
 (x3,y3)=(3,random()*10)
 recta2(x1,y1,x2,y2,x3,y3)
def recta3(x1,y1,x2,y2,x3,y3):
 m = (y2-y1)/(x2-x1)

 xi = x1
 xf = x2
 Nx = 20
 dx = (xf-xi)/Nx
 for i in range(Nx):
    x = xi + i*dx
    y = y1 + m*(x-x1)
    plt.plot(x,y,'.k')

 yr=y1+m*(x3-x1)

 arriba=0   
 if y3 > yr:
     arriba=1

 if arriba == 1:   
  plt.plot(x3,y3,'og',label='punto aleatorio')

 if arriba == 0:   
  plt.plot(x3,y3,'oc',label='punto aleatorio')
     
 plt.plot(x3,yr,'om',label='punto sobre la recta')

 plt.grid()
 plt.plot(x1,y1,'ob',label='(x1,y1)')
 plt.plot(x2,y2,'or',label='(x2,y2)')
 return arriba
# plt.legend()


###################
for i in range(5):
 (x3,y3)=(3,-2+random()*10)
 recta3(x1,y1,x2,y2,x3,y3)
 print('arriba=',recta3(x1,y1,x2,y2,x3,y3))