metpy - Stationplot barbs 因 AttributeError 而失败:“list”对象没有属性“shape”
问题描述
当尝试使用 stationplot.plot_barb 在站模型图中绘制风倒钩时,我得到了这个 AttributeError。我认为发生这种情况是因为该函数不希望将 u 和 v 作为列表,所以我在通过 wind_components 函数之前将它们转换为 numpy 数组。但是,即使我的 u 和 v 是数组而不是列表,我仍然会收到错误消息。
我用metpy的示例代码测试了风倒钩,它可以工作。我什至确保我的 u 数组的类型与metpy 的示例代码返回的类型相同。
######## Code that is questionable #########
u, v = wind_components(np.array(data['wind'])*units('knots'), np.array(data['dir'])*units.degree)
print(data['wind'], data['dir'])
print(u,v)
print(type(u))
stationplot.plot_barb(u, v)
############################################
[4.0, 0.0] [250.0, 0.0]
[ 3.75877048 -0. ] knot [ 1.36808057 -0. ] knot
<class 'pint.quantity.build_quantity_class.<locals>.Quantity'>
完整追溯:
AttributeError Traceback (most recent call last)
<ipython-input-8-b809815aacc3> in <module>()
22 print(u,v)
23 print(type(u))
---> 24 stationplot.plot_barb(u, v)
25 ############################################
26
~/.conda/envs/mybase/lib/python3.6/site-packages/metpy/plots/station_plot.py in plot_barb(self, u, v, **kwargs)
297 except AttributeError:
298 pass
--> 299 u, v = self.ax.projection.transform_vectors(trans, self.x, self.y, u, v)
300
301 # Since we've re-implemented CartoPy's barbs, we need to skip calling it here
lib/cartopy/_crs.pyx in cartopy._crs.CRS.transform_vectors()
AttributeError: 'list' object has no attribute 'shape'
解决方案
所以这实际上在您的纬度/经度变量上失败了,我在您的代码块中没有看到,但我假设是列表(或者至少这是我们之前在这个问题出现时看到的)。我们对此有一个修复程序,将在 MetPy 0.11 中发布,但与此同时,您只需使用 np.array() 将您的纬度/经度列表转换为 Numpy 数组。
推荐阅读
- c# - SignalR 客户端未收到 Keep Alive Ping
- html-table - 设置 MaterializeCSS 响应式表头最大宽度
- r - 引用不同的数据帧(相同大小)以有条件地更改结果数据帧
- python-3.x - 代码中的 leetcode ide 中的索引超出范围,用于查找最长子字符串的长度而不重复字符
- python - 我可以使用带有'i'的while循环作为将在xpath中的tr [i]中使用的变量吗?
- python - 使用 python list 从文件中删除字符串内容
- python - 在 python 中合并 tkinter Treeview 的列
- html - 从 Outlook 发送到 gmail 的 HTML 电子邮件签名增加了额外的空间
- javascript - ASP。NET CORE - Identity _LoginPartial.cshtml 如何使用来自 javascript 的函数
- react-native - 如何使用带有 React Native 的 Redux Toolkit Query 在手机重启或应用关闭之后持久化缓存数据?