首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python绘图合并2个绘图

Python绘图合并2个绘图
EN

Stack Overflow用户
提问于 2020-04-08 07:49:53
回答 1查看 90关注 0票数 0

我试图在matplotlib中通过合并下面显示的这两个图在等高线上绘制流线,但首先显示我的代码:

代码语言:javascript
复制
ax = plt.axes(projection=ccrs.PlateCarree())
ax.coastlines(lw=1)
clevs = np.linspace(-3., 3., 13)
cnplot = plt.contourf(lon,lat,anomspeed,clevs,add_labels=True,cmap='jet')
cbar = plt.colorbar(cnplot)
cbar.set_label('Standard Deviations')
plt.title('~50m Wind Speed Anomaly {} 2020'.format(calendar.month_name[currm-1]))
diffu = (uwndc - uwnd);  diffv = (vwndc - vwnd)
lonn, latt = np.meshgrid(lon, lat)
plt.streamplot(lonn[0,:], latt[:,0], diffu, diffv, density=(3.5,3.5), 
color='k',linewidth=0.4,arrowsize=0.6)#x,y 1D and u,v are 2D

当我尝试运行下面显示的代码时,我得到了这个错误(显示了完整的回溯),但我不理解'ravel‘错误。我认为这与坐标匹配或两个地块之间的关联有关。谢谢你的帮助!

代码语言:javascript
复制
Traceback (most recent call last):

File "C:\Users\U321103\.spyder- 
py3\MonthlyReport_mapsNCEP_contour_monthly_wspdv2.py", line 85, in <module>
plt.streamplot(lonn[0,:], latt[:,0], diffu, diffv, density=(3.5,3.5), 
color='k',linewidth=0.4,arrowsize=0.6)

File "C:\Users\U321103\AppData\Local\Continuum\anaconda3\envs\Maps\lib\site- 
packages\matplotlib\pyplot.py", line 2906, in streamplot
if data is not None else {}))

File "C:\Users\U321103\AppData\Local\Continuum\anaconda3\envs\Maps\lib\site- 
packages\cartopy\mpl\geoaxes.py", line 1897, in streamplot
target_extent=target_extent)

File "C:\Users\U321103\AppData\Local\Continuum\anaconda3\envs\Maps\lib\site- 
packages\cartopy\vector_transform.py", line 146, in vector_scalar_to_grid
return _interpolate_to_grid(nx, ny, x, y, u, v, *scalars, **kwargs)

File "C:\Users\U321103\AppData\Local\Continuum\anaconda3\envs\Maps\lib\site- 
packages\cartopy\vector_transform.py", line 67, in _interpolate_to_grid
s_grid_tuple += (griddata(points, s.ravel(), (x_grid, y_grid),

AttributeError: 'Variable' object has no attribute 'ravel'

EN

回答 1

Stack Overflow用户

发布于 2021-05-14 02:27:04

我正在寻求解决同样的问题,我找到了一个类似问题的答案,这有助于我绘制流线和等高线。看看here吧。

简而言之,而不是:

代码语言:javascript
复制
plt.streamplot(lonn[0,:], latt[:,0], diffu, diffv, density=(3.5,3.5), color='k',linewidth=0.4,arrowsize=0.6)

你会用到

代码语言:javascript
复制
plt.streamplot(lonn[0,:], latt[:,0], np.array(diffu), np.array(diffv), density=(3.5,3.5), color='k',linewidth=0.4,arrowsize=0.6)

使用np.array()为我解决了这个问题。

诚挚的问候,

马特乌斯

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61091222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档