请选择 进入手机版 | 继续访问电脑版
爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 28671|回复: 21

[源代码] 利用python画等温图

[复制链接]

新浪微博达人勋

发表于 2019-8-9 11:01:00 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 珮瑶瑶 于 2019-8-10 15:03 编辑

第一次利用python画气象图,不是很完美,请大神批评指正。
绘制图形如下:
等温图G.png

脚本见附件:

Temperature.py

1.54 KB, 下载次数: 97, 下载积分: 金钱 -5

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

新浪微博达人勋

发表于 2019-8-28 08:39:56 | 显示全部楼层
珮瑶瑶 发表于 2019-8-27 20:29
新手不太理解,请把代码贴出来吧,谢谢
  1. lon,lat = np.meshgrid(lon,lat)
  2. olon = np.linspace(lon_min,lon_max,插值格点数)
  3. olat = np.linspace(同上)
  4. olon,olat = np.meshgrid(olon,olat)
  5. func = Rbf(lon, lat, value,function='linear')
  6. value_new = func(olon, olat)
复制代码


lon,lat,value的形状要一样
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2019-8-9 16:56:34 | 显示全部楼层
我是来学习的,python真强大
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-8-14 09:37:27 | 显示全部楼层
还在学习Python中
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-8-16 11:09:05 | 显示全部楼层
请问python怎么能够平滑等值线?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-8-19 14:27:40 | 显示全部楼层
入门最难,谢谢分享。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-8-20 15:28:15 | 显示全部楼层
本帖最后由 忽如一夜春风来 于 2019-8-20 15:30 编辑
咖喱嫑洋葱 发表于 2019-8-16 11:09
请问python怎么能够平滑等值线?

Scipy插值
from scipy.interpolate import Rbf

……

olon = np.linspace(lon_min,lon_max,插值格点数)
olat = np.linspace(同上)
olon,olat = np.meshgrid(olon,olat)
func = Rbf(lon, lat, value,function='linear')
value_new = func(olon, olat)


……
然后利用 lon,lat, value_new画图
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-8-21 15:58:54 | 显示全部楼层
忽如一夜春风来 发表于 2019-8-20 15:28
Scipy插值
from scipy.interpolate import Rbf

我用的就是1°×1°的经纬度和对应的格点数据,
我在想python上有没有类似grads中九点平滑之类的效果
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-8-21 16:50:54 | 显示全部楼层
咖喱嫑洋葱 发表于 2019-8-21 15:58
我用的就是1°×1°的经纬度和对应的格点数据,
我在想python上有没有类似grads中九点平滑之类的效果

没有找到相关直接使用的函数,这里建议的是插值成更密的格点,达到平滑的目的
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-8-21 17:55:47 | 显示全部楼层
忽如一夜春风来 发表于 2019-8-20 15:28
Scipy插值
from scipy.interpolate import Rbf

我用Rbf(lon, lat, value,function='linear'),报错,ValueError: All arrays must be equal length.
我的lon.shape()=(360,),lat.shape()=(181,),value.shape()=(181,360),length肯定是不一样。
不知道问题出在哪?
这三个的栅格数必须一样吗?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-8-22 10:21:48 | 显示全部楼层
咖喱嫑洋葱 发表于 2019-8-21 17:55
我用Rbf(lon, lat, value,function='linear'),报错,ValueError: All arrays must be equal length.
我 ...

emmmmm,怎么说呢,你需要让lon.shape和lat.shape 还有value.shape是一样的,就是360*181个点,每个点给一个经度一个纬度.就是说他们的维度都变成(181,360)#其实我当时用的时候好像二维数组不能用,所以我还用了flatten()转换成了一维的(181*360)。至于中间赋值过程,你给循环填充或者别的什么方法都行。lon[:,i]=lon[ i .] 。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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