Есть предыдущие вопросы о колчанах на полярных осях в matplotlib, однако они касаются векторных полей. Я заинтересован в рисовании произвольных векторов на полярных осях. Если есть подлинный дубликат, пожалуйста, свяжите его.
Я пишу программное обеспечение, которое касается кругового мира. Я строю траекторию агента от центра круговой арены к краю. Это визуализируется путем рисования вектора от центра круга к краю. Я пытаюсь использовать колчан Matplotlib для построения векторов на множестве полярных осей. Вот минимальный рабочий пример:
import matplotlib.pyplot as plt
import numpy as np
if __name__ == '__main__':
fig = plt.figure()
ax = fig.add_subplot(111, projection='polar')
# Plot origin (agent's start point)
ax.plot(0, 0, color='black', marker='o', markersize=5)
# Plot agent's path
ax.quiver((0, 0), (0, 1), color='black')
# Example of where (0, 1) should be
ax.plot(0, 1, color='black', marker='o', markersize=5)
# Plot configuration
ax.set_rticks([])
ax.set_rmin(0)
ax.set_rmax(1)
ax.set_thetalim(-np.pi, np.pi)
ax.set_xticks(np.linspace(np.pi, -np.pi, 4, endpoint=False))
ax.grid(False)
ax.set_theta_direction(-1)
ax.set_theta_zero_location("N")
plt.show()
Если вы запустите код, вы получите этот график
График показывает правильно начертанный график, примерукажите точку (0, 1), чтобы показать, где должен заканчиваться вектор, а затем сам вектор, который кажется слишком коротким (хотя направление верное). Из документов я понимаю, что quiver
берет декартовы координаты (x, y), обозначающие начальную точку вектора, и (u, v), обозначающие направление вектора. В моем предыдущем опыте с quiver
(u, v) по существу обозначает, где будет вершина вектора, поэтому в этом случае мы ожидаем, что вектор будет отрисован от (0,0) до (0,1), что не 'В этом случае, и я не знаю, почему.
Короче говоря, я хочу иметь возможность рисовать произвольные векторы на множестве полярных осей, и quiver
не работает, как я ожидал. Три вопроса:
Является ли мой код разумным с учетом моей цели? Я хочу нарисовать единичный вектор от начала координат до края полярного графика.
Совершенно ли я неправильно понимаю, как использовать quiver
?
Как нарисовать произвольные векторы на полярных осях в matplotlib? Я знаю о arrow
, и я собираюсь попробовать, хотя первоначальные попытки были неудачными.
Если не использовать стандартный график и просто определить свою собственную полярную систему внутри него, яЯ в тупике.