爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 7215|回复: 18

MeteoInfoLab脚本示例:subplot

[复制链接]

新浪微博达人勋

发表于 2015-6-18 16:38:09 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 MeteoInfo 于 2016-10-20 13:33 编辑

subplot命令可以自动等间距分配多个坐标系(Axes),命令中有三个参数,前两个定义了行数和列数,第三个指定了当前的坐标系(Axes),绘图命令是作用在当前坐标系中的。
Image00849.png

脚本程序:
  1. def f(t):
  2.   return exp(-t) * cos(2*pi*t)

  3. t1 = arange(0., 5., 0.1)
  4. t2 = arange(0., 5., 0.02)

  5. subplot(2,1,1)
  6. plot(t1, f(t1), 'bo', t2, f(t2), 'k')

  7. subplot(2,1,2)
  8. plot(t2, cos(2*pi*t2), 'r--')

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

新浪微博达人勋

发表于 2016-10-20 13:06:17 | 显示全部楼层
王老师,您好!今天在学习教程时,二维坐标轴是实线完全包围封闭,算是一个轴箱(axes box),怎么不能用box off关闭呢
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-10-20 13:38:46 | 显示全部楼层
wuwei2163 发表于 2016-10-20 13:06
王老师,您好!今天在学习教程时,二维坐标轴是实线完全包围封闭,算是一个轴箱(axes box),怎么不能用bo ...

MeteoInfoLab目前还没有做这样的函数,可以考虑在后续的版本中加上。大家有什么好的建议都可以提出来,帮着MeteoInfoLab不断提高。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-10-20 13:45:49 | 显示全部楼层
MeteoInfo 发表于 2016-10-20 13:38
MeteoInfoLab目前还没有做这样的函数,可以考虑在后续的版本中加上。大家有什么好的建议都可以提出来,帮 ...

这一点按照Matlab中的box命令就可以吧,二维坐标轴这个轴箱,可以用box off关闭,也可以box on(默认)打开。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-10-20 13:53:05 | 显示全部楼层
wuwei2163 发表于 2016-10-20 13:45
这一点按照Matlab中的box命令就可以吧,二维坐标轴这个轴箱,可以用box off关闭,也可以box on(默认)打 ...

已经加了一个box函数,应该比较好用,你如果着急用的话我可以尽快上传一个更新版本。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-10-20 14:02:52 | 显示全部楼层
MeteoInfo 发表于 2016-10-20 13:53
已经加了一个box函数,应该比较好用,你如果着急用的话我可以尽快上传一个更新版本。

谢谢王老师,我不急着用,现在正根据教程和测试数据不断学习。这个也不是什么大问题,等到大家碰到的问题多了,一并解决再更新版吧~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-10-20 15:23:30 | 显示全部楼层
本帖最后由 wuwei2163 于 2016-10-20 15:25 编辑
MeteoInfo 发表于 2016-10-20 13:38
MeteoInfoLab目前还没有做这样的函数,可以考虑在后续的版本中加上。大家有什么好的建议都可以提出来,帮 ...


王老师,还有个问题想请教您,比如研究站点上的温度以及降水情况,如下图
捕获.PNG 温度为折线,降水为柱形图,横坐标为站点,图中表示雨量的柱形图跟温度或者站点对应不上?
温度和站点没关系,折线能否变成的平滑的曲线?
ax1 = axes()
xaxis(ax1, color='k')
yaxis(ax1, color='k')
t = arange(1,10)
#s1 = t**3
#plot(t, s1, '-ro')
s2 =[14,15,18,17,12,18,10,11,12,13]
plot(t, s2, '-ro')
xlabel('station')
ylabel('temperature', color='k')
ax2 = twinx(ax1)
yaxis(ax2, color='k')
b=[10,15,18,20,50,8,20,30,16,40]
bar(b,0.2,color='b')
ylim(0,60)
ylabel('rain', color='k')
title('Two y axis example')
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-10-20 17:28:45 | 显示全部楼层
wuwei2163 发表于 2016-10-20 15:23
王老师,还有个问题想请教您,比如研究站点上的温度以及降水情况,如下图
温度为折线,降水为柱形图, ...

给两个axes都加上xlim语句使其具有相同的x轴范围。

  1. ax1 = axes()
  2. xaxis(ax1, color='k')
  3. yaxis(ax1, color='k')
  4. t = arange(1,11)
  5. #s1 = t**3
  6. #plot(t, s1, '-ro')
  7. s2 =[14,15,18,17,12,18,10,11,12,13]
  8. plot(t, s2, '-ro')
  9. xlim(0, 11)
  10. xlabel('station')
  11. ylabel('temperature', color='k')
  12. ax2 = twinx(ax1)
  13. yaxis(ax2, color='k')
  14. b=[10,15,18,20,50,8,20,30,16,40]
  15. bar(b,0.2,color='b')
  16. ylim(0,60)
  17. xlim(0,11)
  18. ylabel('rain', color='k')
  19. title('Two y axis example')
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-10-21 09:14:49 | 显示全部楼层
MeteoInfo 发表于 2016-10-20 17:28
给两个axes都加上xlim语句使其具有相同的x轴范围。

王老师,可以出来了,我原以为只要对应好站点,第二个axes默认跟第一个axes相同呢,越来越对MeteoInfolab感兴趣了。为了进一步巩固这种不同要素多Y轴画法,我又将前几天的闪电数据跟降水或者温度等要素画一起,发现这种不同要素多Y轴方法还没完全学会,给两个axes都加上xlim语句使其相同的x轴,则不出Bar图;第二个axes不加上xlim语句,两个又对应不上,这是什么原因啊?如下图
捕获2.PNG 捕获.PNG
#Read lighting data
fn = 'd:/shujulianxi/79.txt'
tf = open(fn)
times = []
nums = []
for h in range(0, 24):
    times.append(datetime.datetime(2016,7,9,h))
    nums.append(0)
for aline in tf:   
    datalist = aline.split()
    h = int(datalist[2].split(':')[0])
    nums[h] = nums[h] + 1
#Plot
ax1 = axes()
xaxis(ax1, color='k')
yaxis(ax1, color='k')
plot(times, nums, '-ro')
xlim(times[0], times[-1])
xaxis(axistype='time')
ylabel('Lighting number')
title('Lighting number hourly variation in ' + times[0].strftime('%Y/%m/%d'))
#bar
ax2 = twinx(ax1)
yaxis(ax2, color='k')
b=[10,15,18,20,50,8,8,20,50,8,20,50,8,8,20,10,15,18,20,50,8,9]
bar(b,0.3,color='b')
ylim(0,60)
xlim(times[0], times[-1])
ylabel('rain', color='k')
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-10-21 11:44:29 | 显示全部楼层
wuwei2163 发表于 2016-10-21 09:14
王老师,可以出来了,我原以为只要对应好站点,第二个axes默认跟第一个axes相同呢,越来越对MeteoInfolab ...

bar图没有给出x值,软件会给缺省值。而线条图的x值是时间,这样两个图的x值不匹配。需要在绘制bar图的时候也给出x值。

bar(times, b, color='b')

bar函数的帮助文档在这里:http://www.meteothinker.com/docs ... s/plot/bar.html#bar

在Console中输入 >>> help(bar)   也可以看到。
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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