FLORIS中为风电场布局可视化添加风机标签报错的解决咨询
问题:FLORIS添加风机标签时触发TypeError错误
我尝试为FLORIS生成的风电场风机图添加风机ID标签,调用add_turbine_id_labels函数时出现错误。生成风机图的代码为:
visualization.plot_turbines_with_fi(fi=fi)
添加标签的代码及报错信息如下:
visualization.plot_turbines_with_fi(fi=fi) visualization.add_turbine_id_labels(fi=fi, ax=plt.Axes) --------------------------------------------------------------------------- TypeError Traceback (most recent call last) Cell In[32], line 2 1 visualization.plot_turbines_with_fi(fi=fi) ----> 2 visualization.add_turbine_id_labels(fi=fi, ax=plt.Axes) File ~\anaconda3\lib\site-packages\floris\tools\visualization.py:140, in add_turbine_id_labels(fi, ax, **kwargs) 134 layout_x, layout_y, _, _, _ = rotate_coordinates_rel_west( 135 np.array([wind_direction]), 136 coordinates_array 137 ) 139 for i in range(fi.floris.farm.n_turbines): --> 140 ax.annotate( 141 i, 142 (layout_x[0,0,i], layout_y[0,0,i]), 143 xytext=(0,10), 144 textcoords="offset points", 145 **kwargs 146 ) TypeError: annotate() missing 1 required positional argument: 'xy'
错误原因
你传入的ax=plt.Axes是坐标轴类本身,而非已经创建的坐标轴实例。annotate方法需要调用在实例对象上,直接传入类会导致参数绑定失败,触发xy参数缺失的错误。
解决方案
方案1:复用plot_turbines_with_fi返回的坐标轴实例
plot_turbines_with_fi默认会返回创建的坐标轴对象,直接将其传入add_turbine_id_labels即可:
ax = visualization.plot_turbines_with_fi(fi=fi) visualization.add_turbine_id_labels(fi=fi, ax=ax) plt.show()
方案2:获取当前活跃的坐标轴实例
如果已经执行了绘图代码,可以用plt.gca()(Get Current Axes)获取当前的坐标轴实例:
visualization.plot_turbines_with_fi(fi=fi) ax = plt.gca() visualization.add_turbine_id_labels(fi=fi, ax=ax) plt.show()
内容的提问来源于stack exchange,提问作者jackdotdi
相关产品推荐
相关产品推荐

