Линейный график с наложенными стрелками в matplotlib - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь построить график зависимости температуры и скорости ветра в течение дня от времени. То, что я надеялся сделать, это построить график температуры как нормальный линейный график. Затем каждый час в часе есть наложенная стрелка, указывающая в направлении ветра в этот момент (0 градусов на север, 90 градусов по часовой стрелке на восток и т. Д.)

1 Ответ

0 голосов
/ 26 июня 2018

Вы можете попробовать использовать аннотацию matplotlib . Обычно это меньше головной боли, чем Arrow с и FancyArrow с:

import numpy as np
import matplotlib.pyplot as plt

time = np.linspace(0,23,24)
temp = np.array([10]*24) + np.random.random(24)*2
wind = np.linspace(0, 270, 24)

fig, ax = plt.subplots()
ax.plot(time, temp, 'o-')

arrow_len = 1.5
for i, theta in enumerate(np.radians(wind)):
    dx = arrow_len * np.cos(theta)
    dy = arrow_len * np.sin(theta) * ax.get_data_ratio()
    x, y = time[i], temp[i]
    ax.annotate("",
            xy=(x+dx, y+dy), xycoords='data',
            xytext=(x, y), textcoords='data',
            arrowprops=dict(arrowstyle="-|>")
            )
plt.show()

enter image description here

...