в настоящее время у меня возникают проблемы с правильным вращением маркера с помощью функции графика в matplotlib. Я использую маркер как стрелку и хочу, чтобы линия, на которой он находится, проходила через кончик стрелки. В настоящее время это работает для любого поворота, кратного 90 градусам.
Текущий код у меня такой.
import matplotlib.pyplot as plt
from matplotlib.markers import MarkerStyle
from math import sqrt, atan, pi
point_1 = [1,1]
point_2 = [1,2]
mid_point = ((point_1[0] + point_2[0]) / 2, (point_1[1] + point_2[1]) / 2)
plt.plot(mid_point[0], mid_point[1], marker=(3, 0, 0), markersize=20, linestyle='None')
plt.plot([point_1[0], point_2[0]], [point_1[1], point_2[1]], linewidth=1, linestyle='-')
point_1 = [1,1]
point_2 = [2,2]
mid_point = ((point_1[0] + point_2[0]) / 2, (point_1[1] + point_2[1]) / 2)
plt.plot(mid_point[0], mid_point[1], marker=(3, 0, -45), markersize=20, linestyle='None')
plt.plot([point_1[0], point_2[0]], [point_1[1], point_2[1]], linewidth=1, linestyle='-')
point_1 = [2,2]
point_2 = [3,2]
mid_point = ((point_1[0] + point_2[0]) / 2, (point_1[1] + point_2[1]) / 2)
plt.plot(mid_point[0], mid_point[1], marker=(3, 0, -90), markersize=20, linestyle='None')
plt.plot([point_1[0], point_2[0]], [point_1[1], point_2[1]], linewidth=1, linestyle='-')
plt.xlim([0,4])
plt.ylim([0,4])
plt.show()
что дает следующий рисунок.
Как видите, стрелка в середине должна быть отцентрована на линии, на которой она находится под углом 45 градусов, но это не так. Я также проверил это под разными углами, и кажется, что чем ближе поворот к 45 градусам, тем больше стрелка отклоняется от линии. Это то же самое для всех углов между кратными 90 градусам.
Есть ли способ исправить это. Я считаю, что это связано с центром вращения маркеров, но я не уверен, как это изменить.