爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 34659|回复: 12

[源代码] python画风垂直切变填色图

[复制链接]

新浪微博达人勋

发表于 2018-8-23 12:56:37 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
  1. # -*- coding: utf-8 -*-
  2. from mpl_toolkits.basemap import Basemap
  3. import numpy as np
  4. #from matplotlib import cm
  5. import matplotlib.pyplot as plt
  6. from matplotlib import colors
  7. from netCDF4 import Dataset
  8. import scipy.ndimage

  9. xmin=40
  10. xm=57
  11. xmax=73
  12. ymin=24
  13. ymax=37
  14. ny=13
  15. nx=33
  16. st=0
  17. mt=48
  18. et=97
  19. nt=96
  20. #读取数据计算垂直风切变
  21. a=Dataset("D:\\cygwin\\cygdrive\\dachuang\\uv2.5.nc","r")
  22. z1=0
  23. z2=1
  24. uwnd=a.variables['u']
  25. uwnd1=uwnd[:,z1,:,:]
  26. uwnd2=uwnd[:,z2,:,:]
  27. vwnd=a.variables['v']
  28. vwnd1=vwnd[:,z1,:,:]
  29. vwnd2=vwnd[:,z2,:,:]

  30. #计算垂直风切变
  31. vsheer=np.sqrt((uwnd2-uwnd1)*(uwnd2-uwnd1)+(vwnd2-vwnd1)*(vwnd2-vwnd1))

  32. vsheer1=vsheer[st:mt,:,:]
  33. vsheer1=np.mean(vsheer1,axis=0)
  34. vsheer2=vsheer[mt:et,:,:]
  35. vsheer2=np.mean(vsheer2,axis=0)
  36. vsheer3=(vsheer2-vsheer1)
  37. vsheer3[vsheer3>=3]=0
  38. vsheer3[vsheer3<=-2]=0
  39. vsheer3=scipy.ndimage.gaussian_filter(vsheer3,1)

  40. bidate=a.variables['time']
  41. blat=a.variables['latitude'][:]
  42. blon=a.variables['longitude'][:]
  43. blons,blats=np.meshgrid(blon,blat)

  44. ax=plt.subplot(1,1,1)
  45. # setup mercator map projection.
  46. m = Basemap(llcrnrlon=100.,llcrnrlat=0.,urcrnrlon=180.,urcrnrlat=30.,\
  47.             rsphere=(6378137.00,6356752.3142),\
  48.             resolution='l',projection='merc',\
  49.             lat_0=15.,lon_0=140.,lat_ts=20.)
  50. m.drawcoastlines(linewidth=0.3)
  51. #m.fillcontinents(color='linen')

  52. blonm,blatm=m(blons,blats)

  53. #调色
  54. #'#2F4F4F','#008080','#008B8B','#40E0D0','#00FFFF','#7FFFD4','#F0FFFF',
  55. #'#F0FFFF','#FFFF00','#FFA500','#FF8C00','#FF4500','#FF0000'
  56. #'#9400D3','#0000FF','#4169E1','#00BFFF',
  57. cdict=['#008080','#40E0D0','#00FFFF','#FFFFFF',\
  58. '#F0FFFF','#FFFF00','#FFA500','#FF8C00']
  59. my_cmap=colors.ListedColormap(cdict,'indexed')
  60. #cm.register_cmap(name ='dbzcmap',data = cdict,lut = 128)
  61. # 注意:cpool中有15个颜色,但是只使用了10个,其余的会被忽略
  62. # 具体可查阅matplotlib官方文档中对ListedColormap的说明

  63. #lev=np.linspace(np.min(sst3),np.max(sst3),50)
  64. #bounds=np.linspace(-3.2,2.4, 8, endpoint=True)
  65. norm=colors.Normalize(vmin=-2.0,vmax=3)
  66. cf=m.contourf(blonm,blatm,vsheer3,cmap=plt.cm.RdBu_r,norm=norm)
  67. cb=m.colorbar(cf,"bottom",size="10%",pad=0.3,alpha=1,norm=norm)
  68. #,ticks=bounds,boundaries=bounds)
  69. #cb.set_ticks(np.arange(-1.2,2.8,0.4))
  70. #cb.set_ticklabels(np.arange(-1.2,2.8,0.4))
  71. #cbar = pyplot.colorbar(pp, orientation='vertical', ticks=np.arange(cbar_min, cbar_max+cbar_step, cbar_step), format=cbar_num_format)
  72. m.drawparallels(np.arange(0,40,10),labels=[1,0,0,0],fontsize=10,linewidth=0.0,)
  73. # draw meridians
  74. m.drawmeridians(np.arange(100,220,20),labels=[0,0,0,1],fontsize=10,linewidth=0.0)
  75. ax.set_title('Vms',loc='left')
  76. plt.show()
复制代码

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-9-13 14:48:45 | 显示全部楼层
帅哥要能把图分享了就更好了
密码修改失败请联系微信:mofangbao
回复 支持 2 反对 0

使用道具 举报

新浪微博达人勋

发表于 2019-12-26 09:10:22 | 显示全部楼层
42.vsheer3=scipy.ndimage.gaussian_filter(vsheer3,1) 请问这一句是在做什么处理?为什么需要滤波?
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2018-8-23 21:14:27 | 显示全部楼层
谢谢分享,还是第一个
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-8-24 08:43:12 | 显示全部楼层
楼主最好给出图片示例,方便大家学习
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-8-26 19:51:43 | 显示全部楼层
请问楼主资料是什么资料呢?有处理过么?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-9-11 13:32:46 | 显示全部楼层
linlinouc 发表于 2018-8-26 19:51
请问楼主资料是什么资料呢?有处理过么?

ECMWF风场资料,未处理
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-9-11 13:33:14 | 显示全部楼层
许市 发表于 2018-8-24 08:43
楼主最好给出图片示例,方便大家学习

好的,以后注意~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-9-13 14:48:39 | 显示全部楼层
帅哥要能把图分享了就更好了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2020-2-17 14:21:42 | 显示全部楼层
出来的图长啥样呢
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表