|
气象数据可视化主要依靠matplotlib做绘图,其他库包为辅助,包括数据处理的,地理信息处理的等等。 绘图主要有六步(“六部曲”)(不是绝对的方法,视具体情况使用): 引入库包:import matplotlib.pyplot as plt 设定画布:fig=plt.figure() 导入数据:之前已有介绍导入nc文件格式数据(【气候软件】Python读取气象数据 NetCDF文件(***.nc))和导入txt文本格式数据(【气候软件】Python2:读取TXT文本格式的数据)。 线图命令:plt.plot(x,y,lw=,ls=,c=,alpha=) 出图:plt.show() 存图:fig.savefig("···") 0 k! e! j) r9 L6 U1 s
只要按照以上六步,基本绘图没有问题!!!
# V% z8 n% k* A4 r" C% `
Q* K3 _* }5 l/ W/ P3 y) oCartopy是一个Python包,用于地理空间数据处理,以便生成地图和其他地理空间数据分析。Cartopy利用了强大的PROJ.4、NumPy和Shapely库,并在Matplotlib之上构建了一个编程接口,用于创建发布质量的地图。cartopy的主要特点是面向对象的投影定义,以及在投影之间转换点、线、向量、多边形和图像的能力。
) j9 s4 g9 y) k, N绘制简单气象地图 Cartopy公开了一个接口,可以使用matplotlib轻松创建地图。 1. 使用anaconda安装Cartopy库: - + I/ l8 @6 o2 z% d' d
$ f: N, N0 A- f% q$ l/ `+ c( u- \: m
conda install Cartopy" f3 }, q. z/ ^$ \
2 u* K7 R& x1 y) B& s# L
7 |" @; h1 Z, `3 z0 o
o) D7 ^( F8 |2 ~; L2. 工作在多图形(figures)和多坐标系(axes) MATLAB和pyplot都有当前图形(figure)和当前坐标系(axes)的概念。所有的绘图命令都是应用于当前坐标系的。gca()和gcf()(get current axes/figures)分别获取当前axes和figures的对象。通常,你不用担心这些,因为他们都在幕后被保存了,下面是一个例子,创建了两个子绘图区域(subplot): 例:绘制图中图
! _" K9 |$ G( B* W0 D& \ A, b! y- ) `! v% r/ G k' k, o! }6 m
, I) `2 a4 c1 W- ) Q9 t0 ^( y: b _+ }/ ^
- l9 b/ P o* P
- 5 b6 A; T* L6 N8 J! C. w3 v
0 v( P+ s6 k/ D* v/ Z7 n) M8 |" I5 R- 1 `8 T" P" ?& Q& G; I" q H
- ; l% _- Q2 Q8 }' K& }
+ Y# Z) M8 q4 ]* T* n- & H+ ]( S8 Q5 U0 b
: k; Z% S& Z, J. ^& E$ w" l! v
1 \) G- j8 U0 Z# |% t% L
; F0 L: O* |5 T2 f ] }- ' L+ K+ b9 ~' H' ]3 F8 B
- z C; Q$ y/ G0 M
) a( `; _% O8 z$ }- - D: k9 c$ M: E' H. N1 s
- 4 T/ _: @6 R/ V
- 7 K( u0 X8 g& t
- {9 O/ _' @ `$ M8 e0 G
0 H+ C0 { k4 j. F2 U- ; y& ~2 c4 N8 \+ \
9 C+ C$ F9 v8 s* G# @
8 r; D* b& ~" M" \
# V/ j! [1 B, R' n$ F- 4 ~0 I* }) H: v- K" W ~
- " f6 F% H# f p6 B/ J) Q
, g# ]! ~5 S3 [# X3 M f' E
importnumpy asnpimportmatplotlib.pyplot aspltimportpandas aspd#新建figurefig = plt.figure() #默认的画布大小#读取某地1979-2019年年平均气温数据共40年data = pd.read_csv("annual tem.txt", skiprows=1, sep='\s+', header=None, names=['year', 'sta1', 'sta2'])print(data)x = data.yeary1 = data.sta1y2 = data.sta2#新建区域ax1#figure的百分比,从figure 10%的位置开始绘制, 宽高是figure的80%left, bottom, width, height = 0.1, 0.1, 0.8, 0.8#获得绘制的句柄ax1 = fig.add_axes([left, bottom, width, height])ax1.plot(x, y1, 'r')ax1.set_title('station1 annual mean temperature')#新增区域ax2,嵌套在ax1内,看一看图中图是什么样,这就是与subplot的区别left, bottom, width, height = 0.62, 0.15, 0.25, 0.25#获得绘制的句柄ax2 = fig.add_axes([left, bottom, width, height])ax2.plot(x, y2, 'b')ax2.set_title('station2 annual mean temperature')plt.show()
, W7 B$ c/ v, o9 ?/ e0 k% ~$ M
* t: e: y* a+ E3 D8 E* e7 E/ [9 A0 v1 }
1 X6 h) S1 {! u5 ^/ g3 W |