爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 10895|回复: 12

MeteoInfoLab脚本示例:曲线拟合

[复制链接]

新浪微博达人勋

发表于 2017-3-15 23:53:55 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 MeteoInfo 于 2017-3-18 13:34 编辑

MeteoInfoLab中mipylib.numeric中增加了fitting包,用来进行曲线拟合,目前有多项式、幂函数、指数函数拟合功能。

多项式拟合:
  1. from mipylib.numeric import fitting

  2. x = linspace(0, 4*pi, 10)
  3. y = sin(x)

  4. #Plot data points
  5. plot(x, y, 'ro', fill=False, size=1)

  6. #Use polyfit to fit a 7th-degree polynomial to the points
  7. r = fitting.polyfit(x, y, 7)

  8. #Plot fitting line
  9. xx = linspace(0, 4*pi, 100)
  10. p = r[0]
  11. yy = fitting.polyval(p, xx)
  12. plot(xx, yy, '-b')
  13. title('Polynomial fitting example')

mi_1.4.1_lab_polyfit.png


幂函数拟合:
  1. from mipylib.numeric import fitting

  2. fn = 'D:/Temp/ascii/PM&vis-1.txt'
  3. ncol = numasciicol(fn)
  4. nrow = numasciirow(fn)
  5. a = asciiread(fn,shape=(nrow,ncol))
  6. x=a[:,0]
  7. y=a[:,1]
  8. z=a[:,2]
  9. axes(tickfontsize=17)
  10. ls=scatter(x,y,s=8,c=z,cmap='NCV_jet',edgecolor=None,cnum=20)
  11. xlim(0,450)
  12. ylim(0,30)
  13. xlabel(r'$\rm{PM_{2.5}} \ (\mu g \ m^{-3})$',fontsize=17)
  14. ylabel(r'$\rm{Visibility (km)}$',fontname='Arial',fontsize=17)
  15. colorbar(ls,fontsize=17,label='RH(%)')

  16. #Pow law fitting
  17. a,b,r,f = fitting.powerfit(x, y, func=True)

  18. #Plot fitting line
  19. xx = linspace(x.min(), x.max(), 100)
  20. #yy = a*pow(xx, b)
  21. yy = fitting.predict(f, xx)
  22. plot(xx, yy, '-b', linewidth=2)
  23. text(250, 20, r'$y = ' + '%.4f' % a + 'x^{%.4f' % b + '}$', fontsize=16)
  24. text(250, 18, r'$r^2=%.4f' % r + '$', fontsize=16)

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

新浪微博达人勋

发表于 2017-3-23 19:31:09 | 显示全部楼层
MeteoInfo越来越强大了,支持
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-5-31 10:36:47 | 显示全部楼层
老师,你展示下你的PM&vis-1.txt里面的数据格式吗?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-5-31 11:03:28 | 显示全部楼层
猫猫2003 发表于 2017-5-31 10:36
老师,你展示下你的PM&vis-1.txt里面的数据格式吗?

182.82         1.1868912        92
193.41         1.207008        83
159.08         2.8565856        78
146.80         3.2790384        71
210.08         2.414016        74
160.63         3.954388114        82
76.85         3.126725486        80
42.48         7.1615808        76
97.75         4.8079152        71
107.90         3.6411408        83
90.60         5.8137552        79
77.82         7.425973029        63
85.05         4.6872144        76
176.53         1.9513296        83
144.23         1.8708624        80
242.38         1.207008        84
262.58         0.9454896        94
...
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-5-31 11:32:28 | 显示全部楼层
好强大,试验成功~
pmvisrh.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-5-31 14:32:17 | 显示全部楼层
MeteoInfo 发表于 2017-5-31 11:03
182.82         1.1868912        92
193.41         1.207008        83
159.08         2.8565856        78

测试成功了,但没图片上没有函数 。 是怎么回事呢?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-5-31 15:57:58 | 显示全部楼层
MeteoInfo 发表于 2017-5-31 11:03
182.82         1.1868912        92
193.41         1.207008        83
159.08         2.8565856        78

已经明白,谢谢老师。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-4-28 22:25:54 | 显示全部楼层
老师您好,我想请问一下如果我想做直线的拟合用什么函数呢
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-4-29 16:15:19 | 显示全部楼层
图画的好棒,感觉好多东西需要学习
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-4-30 17:58:02 | 显示全部楼层
葱葱葱白 发表于 2019-4-28 22:25
老师您好,我想请问一下如果我想做直线的拟合用什么函数呢

参考这里:http://bbs.06climate.com/forum.p ... &extra=page%3D1
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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