爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 1454|回复: 8

绘制气团轨迹动态图

[复制链接]

新浪微博达人勋

发表于 2023-11-3 16:07:57 | 显示全部楼层 |阅读模式

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

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

x
HYSPLIT模式输出的气团轨迹文件可以通过MeteoInfoLab的addfile_hytraj函数读取,通过变量lon, lat, height读取气团轨迹经纬度和高度坐标。在地图坐标系中绘制地理底图,并用scatter函数绘制所有气团的终点位置(后向气团轨迹),然后通过循环绘制气团轨迹运动动画图。循环中的绘图函数plot来绘制气团轨迹线条,scatter来绘制该循环时次气团终点,需要注意的是下个循环绘制前用两个cll()函数删除上次循环绘制的轨迹线条和点。可以用time模块的sleep函数来控制动画的播放速度。

  1. import time

  2. fn = os.path.join(migl.get_sample_folder(), 'HYSPLIT', 'tdump')
  3. f = addfile_hytraj(fn)
  4. lon = f['lon'][:]
  5. lat = f['lat'][:]
  6. height = f['height'][:]

  7. #Plot
  8. ax = axesm()
  9. geoshow('country', edgecolor='gray', facecolor=(230,230,230))
  10. levs = arange(0, 600, 50)
  11. scatter(lon[:,0], lat[:,0], size=6, color='r', marker='S')
  12. yticks(arange(35, 54, 5))
  13. title('Trajectory')

  14. ntraj, npoint = lon.shape
  15. for i in range(2, npoint+1):
  16.     if i > 2:
  17.         cll()
  18.         cll()
  19.     tlayer = plot(lon[:,-i:], lat[:,-i:], zvalues=height[:,-i:], levels=levs, linewidth=2)
  20.     scatter(lon[:,-i], lat[:,-i], marker='s', size=5, edgecolor='m', facecolor=None)
  21.     if i == 2:
  22.         colorbar(tlayer)
  23.     xlim(-92, -55)
  24.     ylim(34, 54)
  25.     plt.draw()
  26.    
  27.     time.sleep(0.1)


20231025_165640.mp4 (863.52 KB, 下载次数: 28)
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2023-11-6 16:48:43 | 显示全部楼层
请问下老师这个报错是什么意思啊indices must be 1 dimensions!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-11-6 17:32:10 | 显示全部楼层
请问老师用plot3里画的时候怎么调轨迹的透明度呢?直接加alpha参数只能修改其中一个颜色的透明度
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2023-11-6 21:27:49 | 显示全部楼层
薛定谔的猫啊猫 发表于 2023-11-6 16:48
请问下老师这个报错是什么意思啊indices must be 1 dimensions!

可能是读取数组的维数设置问题
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2023-11-6 21:29:18 | 显示全部楼层
LLLLLYH 发表于 2023-11-6 17:32
请问老师用plot3里画的时候怎么调轨迹的透明度呢?直接加alpha参数只能修改其中一个颜色的透明度

这是二维图,没有用到plot3函数
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-11-7 14:59:42 | 显示全部楼层
对的,如果应用到plot3,请问有办法把轨迹透明度统一调整到半透明吗?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2023-11-7 18:19:32 | 显示全部楼层
LLLLLYH 发表于 2023-11-7 14:59
对的,如果应用到plot3,请问有办法把轨迹透明度统一调整到半透明吗?

用alpha参数,比如  alpha=0.5
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-11-8 09:40:54 | 显示全部楼层
MeteoInfo 发表于 2023-11-7 18:19
用alpha参数,比如  alpha=0.5

我试过了,用在画HYSPLIT轨迹上的水汽含量时只能改变色标中的几个颜色
colsh2 = makecolors(len(levs) + 1, cmap='WhiteGreen', alpha=0.2)
traj = plot3(lon[ip,:], lat[ip,:], alt[ip,:], mvalues=sh, levels=levsh,colors=colsh2,linewidth=2)
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2023-11-8 21:58:14 | 显示全部楼层
LLLLLYH 发表于 2023-11-8 09:40
我试过了,用在画HYSPLIT轨迹上的水汽含量时只能改变色标中的几个颜色
colsh2 = makecolors(len(levs) + ...

应该是有bug,有空了我更新一下
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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