Tengo entendido que estás preguntando qué hacer cuando la punta de flecha está fuera de la trama. Hay algunas opciones:
- Puede dibujar la flecha hasta el límite y usar un tipo de cabeza de flecha que indique que no es el extremo verdadero de la flecha, como un cabezal de media flecha,
"shape"="left"
, o abierto vs. cerrado, etc. - Puede dibujar la punta de flecha a mitad de camino a lo largo de la flecha, como se hace para una línea de corriente. No conozco un comando para esto en MPL, pero podría hacerlo fácilmente usando dos flechas, o simplemente trazar una línea y la cabeza de una flecha, etc.
Editar:Para completar, agregaré mi opinión sobre un #2. Aquí está trazado la línea, y luego trazar la flecha sobre la línea, y la punta de flecha se puede trazar en cualquier lugar a lo largo de la línea y en control por f
(entre 0 y 1). El ejemplo muestra algunas líneas trazadas para f
que van desde 0
a .1
.
import numpy as np
import pylab as plt
def arrow_mh(v4, color, f=.5):
x0, y0, x1, y1 = v4
line = plt.plot([x0, x1], [y0, y1], color=color)
f = max(f, .0001)
dx = f*(x1-x0)
dy = f*(y1-y0)
a = plt.arrow(x0, y0, dx, dy,
color=color,head_width=0.05, head_length=0.1)
def arrow_segment(AB):
for idx in range(0,len(AB)):
arrow_mh(AB[idx], 'blue', .01*(9-idx))
plt.xlim(0, 1)
plt.ylim(0, 1)
plt.show()
AB = np.array([[.1*i, .1, .5, 4] for i in range(10)])
arrow_segment(AB)