这里有一个小小的困惑:我想通过在预测时间 t 绘制一系列箭头来绘制风预测(在x轴上)在风速 * 风 *(y轴)和箭头指向风吹来的方向。箭头的尺寸应该是地块高度的给定分数,例如,任意确定为图高的1/15。由于图自动缩放到 wind 列表中的最大风速,因此可以得出:
arrowlength = np.max(wind) / 15.0
字符串
这应该会产生以Y为单位的箭头长度。问题似乎是X单位对于绘图的目的是不兼容的,因为我使用了日期时间。所以当我执行以下操作时,matplotlib得到了一个扭曲(这是应该工作的代码 * 如果 * x轴不是日期时间):
for x,u,v,y in zip(t, windu, windv, wind):
xcomp = arrowlength * sin(u/v)
ycomp = arrowlength * cos(u/v)
arr = Arrow(x-xcomp/2, y-ycomp/2, x+xcomp/2, y+ycomp/2, edgecolor='black')
ax.add_patch(arr)
arr.set_facecolor('b')
型
当然,当datetime t(在循环中分别为 x)被传递给Arrow函数时,这一点就失败了。
我想这是一个非常普遍的问题:如何将线条和其他注解放置到X和Y单位不同的坐标网格中?
1条答案
按热度按时间ix0qys7i1#
您可以使用
matplotlib.dates
(http://matplotlib.org/api/dates_api.html)将日期转换为轴坐标,使用date2num()
方法。在下面的示例中,我创建了一个从(April 5 2015,10)到(April 7 2015,20)的箭头:字符串
的数据