爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 39153|回复: 26

[经验总结] cartopy快速安装

[复制链接]

新浪微博达人勋

发表于 2015-7-17 10:09:45 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 po_po1 于 2015-7-17 15:05 编辑

cartopy功能比Basemap较为强大,操作比较方便,但不太好安装。
现在介绍一种快速安装的方法,顺便附带一个绘图例子
最便捷安装方法:
在以下链接下载合适的Anaconda版本:

http://continuum.io/downloads

下载好之后双击安装,一步一步,很快就好了

然后在左侧菜单栏找到Anaconda的快捷方式,打开如图红圈圈注的那个:


QQ图片20150717100327.png

输入:

conda install -c scitools cartopy


`TO%ZWJMK1J%OJM6}8N0AE7.png

就可以自动把cartopy安装上了


此外,如果需要安装、更新一些库,也可以输入:以matplotlib为例,
安装:


conda install matplotlib

更新:


conda update matplotlib

其它软件包方法类似




评分

参与人数 2金钱 +20 贡献 +4 收起 理由
云端的小颜 + 2 很给力!
又是那隻貓 + 18 + 4 很给力!

查看全部评分

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

新浪微博达人勋

 楼主| 发表于 2015-7-17 10:16:43 | 显示全部楼层
本帖最后由 po_po1 于 2015-7-17 10:18 编辑

利用cartopy绘图:

figure_1.png

这是模式初始场的植被发布图,图中号码为区域植被类型代码


绘图代码如下:



from netCDF4 import Dataset
​
q=Dataset(r'D:/Desktop/ngc_DOMAIN000.nc')
xlon=q.variables['xlon'][:]
xlat=q.variables['xlat'][:]
lad=q.variables['landuse'][:]
​
​


import matplotlib.pyplot as plt
import numpy as np
import cartopy.io.shapereader as shpreader
from cartopy.mpl.patch import geos_to_path
from matplotlib.patches import PathPatch
import cartopy.crs as ccrs
import cartopy.feature as cfeature
import shapely.geometry as sgeom
import matplotlib.ticker as mticker
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER , LATITUDE_FORMATTER
import matplotlib.colors as mc
def myset(ax):
    plate_carre_data_transform = ccrs.PlateCarree()._as_mpl_transform(ax)
    line=ax.gridlines(draw_labels=True,alpha=0.5,linestyle='--')
    line.xlabels_top=False
    line.ylabels_left=False
    #line.xlines=False#只剩下x轴平行线
    line.xlocator=mticker.FixedLocator(np.arange(70,140,10))#手动设置x轴刻度
    line.xformatter= LONGITUDE_FORMATTER
    line.yformatter= LATITUDE_FORMATTER
    line.xlabel_style={'size':10,'color':'black'}
    line.ylabel_style={'size':10,'color':'black'}
    line.yalbel_style={'color':'red','weight':'bold'}
    return
​
​


def mycon(ax,level,level0,pre,x,y,cmape):
    plate_carre_data_transform = ccrs.PlateCarree()._as_mpl_transform(ax)
    file1=r'D:/baiduyundownload/map/China boundary/province boundary/bou2_4p.shp'
    reader1 = shpreader.Reader(file1).geometries()
    for province in reader1:
        ax.add_geometries([province],ccrs.PlateCarree(),linewidth=0.4,\
                          edgecolor='black',facecolor='none',alpha=0.75)
    norm= mc.BoundaryNorm(level, 256)
    quad_set = plt.contourf(xlon,xlat,lad,alpha=0.75,levels=level,norm=norm, \
                            cmap=cmape,transform=ccrs.PlateCarree())#绘制等值线填充
    plt.colorbar(quad_set,orientation='horizontal',ticks=level0,\
                 shrink=0.85,extend='both',extendrect=False,pad=0.05)




def mlable(ax,level,level0,pre,x,y,cmape):
    plate_carre_data_transform = ccrs.PlateCarree()._as_mpl_transform(ax)
    cs=plt.contour(x,y,pre,alpha=0.75,levels=level,colors='w',\
                   linewidths=0.02,\
                   transform=ccrs.PlateCarree())
    cl=plt.clabel(cs,level,fmt='%i',colors='black',\
               fontsize=12,manual=True)
    for cp in cl:
        cp.set_rotation('horizontal')
        cp.set_bbox(dict(facecolor='white', edgecolor='w', alpha=0.5))#,\
        cp.update_bbox_position_size=5
​


level=range(0,20);level0=range(1,20)
cmap='Dark2'
​


ax=plt.axes([0.02,0.02,0.9,0.94],projection=ccrs.PlateCarree())
myset(ax)
mycon(ax,level,level0,lad,xlon,xlat,cmap)
mlable(ax,level,level0,lad,xlon,xlat,cmap)
​

plt.show()
​


​







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

新浪微博达人勋

 楼主| 发表于 2015-7-17 10:20:08 | 显示全部楼层
上面标号是鼠标点上去的,鼠标点击的位置生成标号,鼠标点完之后按回车,就好了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-7-17 10:56:03 | 显示全部楼层
能否比较下cartopy和basemap的功能
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-7-17 11:21:07 | 显示全部楼层
又是那隻貓 发表于 2015-7-17 10:56
能否比较下cartopy和basemap的功能

cartopy的使用更为简单方便,不像basemap生成一个地图需要很多行代码,目前基本上可以替代basemap的大部分功能
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-7-17 11:24:27 | 显示全部楼层
http://www.lfd.uci.edu/~gohlke/pythonlibs/里面可以下载编译好的cartopy,还有iris,就是iris的grib功能在windows下无法使用
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-7-17 13:45:46 | 显示全部楼层
Cartopy最近几个版本改进很大。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-7-17 14:53:54 | 显示全部楼层
又是那隻貓 发表于 2015-7-17 10:56
能否比较下cartopy和basemap的功能

基本差不多,但cartopy可以做地图白化,Basemap貌似不行
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-7-17 22:14:37 | 显示全部楼层
用心了,留着慢慢看
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-7-28 10:16:29 | 显示全部楼层
对大家很有帮助的内容
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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