爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 59131|回复: 62

[经验总结] 我的python学习第二步:绘制基本图形,查看某个模块是否存在?Basemapde 基本使用

  [复制链接]

新浪微博达人勋

发表于 2016-9-6 13:14:38 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 Swallow 于 2017-5-26 21:03 编辑

我的python学习第二步:绘制基本图形,查看某个模块是否存在?python查看,同时适用于adaconda版本,懒人操作
每遇到一个问题,总要想办法去解决,前面解决了安装和读取nc文件第一步。
总算解决了NC文件的读取问题,接下来就是绘制图形,比如需要绘制500hPa高度场,那么问题来了,绘制图形,需要底图(地图),经纬度,等值线图或阴影图,需要地图或底图模块,那么又牵涉到引入模块的问题,那我的adaconda是否提供此类模块?是不是还是需要我自己去找?若没有还需要去adaconda网站去找相应的底图模块。那我跟着我去旅行吧!尽管我百度的很辛苦,但是积累在这里,可以便民便己,以免自己学习不扎实,毕竟年龄也大了,长时间不用,难免会忘记。我还是一步步记下来,好给自己一个傻瓜的记忆。
一、查看模块
1.又要老生常谈,看看adaconda是否自带了绘制NC文件图形的底图模块?我感觉没有,因为adaconda不可能单单为你气象领域做好集成模块,而且既然连netCDF模块都没有内嵌其中,那么mpl_toolkits.basemapcolormap_define诸如此类的模块也有可能没有,那就来查看下,如何查看安装模块。
学习之路之一中,已经可以查看全部模块,但是查看全部难免眼花缭乱,我们还是单打单去查看某个模块是否集合,若没有,那就想办法自己装吧。希望有,那我就懒省事了。没有,还是老老实实去找模块吧,没有的话,只好求助国家局的老师了!羞死了!
哈哈,看来是我主管臆断了,原来绘图工具mpl_toolkits这个模块是存在的。
2.好吧,经过我的测试,如果想单独查看某个模块是否存在。
我需要查看mpl_toolkits.basemap模块是否存在,那么就不像help(‘modules)搜索全部,只需要help(mpl_toolkits’)即可,不需要带.之后的属性或是方法等。接下来有信心了,缺什么,找什么?当然必须找adaconda版本的模块。
学习之路还很漫长。本篇等完成一个完整的绘图后上传心得。
Anaconda中的mpl_toolkits下确实没有basemap。需要自己装,由于anaconda没有配对的win32版本的basemap,百度,求助python群,用了很多方法,
conda install -c conda-forge basemap=1.0.8.dev不行,conda install -c anaconda basemap=1.0.7也不行,pip uninstall basemap卸载,重新装pip install basemap也不行;最终不得不求助我的正牌老师,去python软件库 http://www.lfd.uci.edu/~gohlke/pythonlibs/ 下载了basemap-1.0.8-cp35-none-win32.whl版本,cmd进入,输入 pip install ,拖入此安装包,居然安装ok了。开始调试程序吧。期间感谢气象家园-python群主又是那隻貓的精心指点。
感叹:anaconda软件包不能总依赖于anaconda,没办法的情况下,还需要借助python自有软件库,下载和安装自己需要的模块,安装包。Python学习之路上还在为安装系统而愁!
二、绘制图形
清风博客上有一个绘制方法,见博客链接:
http://blog.sina.com.cn/s/blog_6ab074c30102w1an.html
我这里给出一个读取国家气候中心NCC月动力延伸模式的500hPa高度场的模板,绘制图形,能简单绘出图形,循环没做好,经纬度还没标出来,中国或任意省份地图叠加没做,后期有精力精修图形。代码如下:给大家赠送一本好书,绘图matplotlib函数汇总,中文本,估计有人需要。
#读取DERF2.0 NC数据
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
from netCDF4 import Dataset,num2date
import os
#varnamel=varname
filename='Z_NAFP_C_BAQH_20160721000000_P_BCC_AGCM2.2_gh0500_1.0_MN_00.nc'
data=Dataset(filename)
# print(data)
# exit()
lat= data.variables['lat'][:].tolist()
lon= data.variables['lon'][:].tolist()
gh500=data.variables['gh'][:,:,:].squeeze()
idate=data.variables['time']
#valid_dates = num2date(idate[:],'hours since 1-1-1 00:00:0.0').tolist()
#print(valid_dates)
# print idate.shape[0]
# print gh500.shape
# exit()
# create figure and axes instances
lons, lats = np.meshgrid(lon,lat)
m = Basemap(resolution='l',area_thresh=10000,projection='cyl',llcrnrlon=0.0,urcrnrlon=360.0,llcrnrlat=-90.0,urcrnrlat=90.0)
for i in range(idate.shape[0]):
    fig1 = plt.figure()
    ax = fig1.add_axes([0.1,0.1,0.8,0.8])
    clevls_hgt=[-80,-60,-40,-20,0,20,40,60,80]
    x, y = m(lons, lats)
    parallels = np.arange(-90.,90,30.)
    meridians = np.arange(0.,360.,60.)
    # register_own_cmaps('blue_white_red',startcolor=[0,0,255],endcolor=[255,0,0])
    CS2 = m.contour(x,y,gh500[i,:,:],origin='lower',cmap=plt.get_cmap('Blues'),extend='both');CS2.clabel()
    m.drawcoastlines(linewidth=0.2)
    #cb = m.colorbar(CS2,"bottom",size="5%",pad="12%")
    plt.title('500hPa Height',size=20)
    plt.show()
    # plt.close()
    exit()

增补安装basemap,为了使用更全面的Python,今天换回2.7版win64位,需要安装basemap,conda install basemap连不上网,魔法师帮忙,通过清华源镜像https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/,来安装,dos窗口conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes命令,再conda install basemap,果然快很多!已装上。Python之路积累一小步,谢谢!

500hPa高度场

500hPa高度场

matplotlib函数汇总.pdf

1.17 MB, 下载次数: 404, 下载积分: 金钱 -5

评分

参与人数 3金钱 +36 贡献 +10 体力 +80 收起 理由
电视机 + 1 很给力!
mofangbao + 15 + 5
言深深 + 20 + 5 + 80 很给力!

查看全部评分

本帖被以下淘专辑推荐:

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

新浪微博达人勋

发表于 2016-9-6 15:06:35 | 显示全部楼层
好贴,回头来学,python好强大哦~~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-9-6 15:36:14 | 显示全部楼层
正好最近想学呢,跟着老师一步步来,坚持!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-9-6 15:37:24 | 显示全部楼层
托尼托尼乔巴 发表于 2016-9-6 15:36
正好最近想学呢,跟着老师一步步来,坚持!

我也正在傻瓜式点滴学习中
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-9-6 15:45:49 | 显示全部楼层
Swallow 发表于 2016-9-6 15:37
我也正在傻瓜式点滴学习中

我是学MeteoInfo中发现python很好用,所以想学习,正巧你又开始开帖~~就按照你的步骤来啦
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-9-6 15:47:50 | 显示全部楼层
托尼托尼乔巴 发表于 2016-9-6 15:45
我是学MeteoInfo中发现python很好用,所以想学习,正巧你又开始开帖~~就按照你的步骤来啦

这个帖子还没有解决标注经纬度和添加中国地图和任意省份地图和循环,没做好!压力好大,大多是英文代码,领悟太慢!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-9-6 15:53:34 | 显示全部楼层
Swallow 发表于 2016-9-6 15:47
这个帖子还没有解决标注经纬度和添加中国地图和任意省份地图和循环,没做好!压力好大,大多是英文代码, ...

每种软件都很强大,学会容易,学专难,都得一点点积累,你已经走在前面啦~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-9-6 16:29:40 | 显示全部楼层
好贴!!!
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2016-9-6 16:46:17 | 显示全部楼层
谢谢楼主分享~~~~~~~~~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-9-6 17:41:34 | 显示全部楼层
pathon确实强大,初学者表示很懵,特别感谢楼主能开这样的帖子,不过要是能在重要的行进行注释,说明这一行是干嘛的,可能有助于初学者学习~
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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