Я только что добавил стрелку к одному из своих графиков в mpl, и мне пришлось немного возиться, пока я не заработал, чтобы он работал должным образом. Я подумал про себя: «Вы знаете, что могло бы сделать это намного проще? Если бы я мог просто указать все свойства в относительных размерах от 0 до 1».
Если вы хотите увидеть некоторый код, воткак я в конце концов решил это:
import matplotlib.pyplot as plt
fig, DSC = plt.subplots(figsize=(7,4))
DSC.plot([0,1,2],[-2,20,59])
x0,xn = DSC.get_xlim()
y0,yn = DSC.get_ylim()
pdx,pdy = (xn-x0), (yn-y0)
DSC.arrow(x = x0 + pdx*0.07,
y = y0 + pdy*0.03,
dx = 0,
dy = pdy*0.1,
facecolor='firebrick',
edgecolor='k',
head_width=pdx*0.04,
head_length=pdy*0.04,
width=pdx*0.02)
plt.show()
Так что я сам сделал свои относительные единицы, но мне было интересно: не будет ли более разумным сделать этот способ взаимодействия по умолчанию с объектом patches
по умолчаниюв общем? В чем дело? Есть ли родной способ использовать патчи в относительных единицах? И если мы уже используем абсолютные единицы, может быть, для предотвращения растяжения в других размерах, почему бы не измерять размеры фигуры в дюймах?