|
气象数据可视化主要依靠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("···") 8 } E2 Z1 R" A! |7 W E2 u
只要按照以上六步,基本绘图没有问题!!! 9 P0 i) m0 w: K
7 u/ F2 F! W2 X. a) @/ z8 x5 |
Cartopy是一个Python包,用于地理空间数据处理,以便生成地图和其他地理空间数据分析。Cartopy利用了强大的PROJ.4、NumPy和Shapely库,并在Matplotlib之上构建了一个编程接口,用于创建发布质量的地图。cartopy的主要特点是面向对象的投影定义,以及在投影之间转换点、线、向量、多边形和图像的能力。
2 Z/ ^9 h. E& x+ E( e" O' \! N绘制简单气象地图 Cartopy公开了一个接口,可以使用matplotlib轻松创建地图。 1. 使用anaconda安装Cartopy库:
0 ?$ Y/ D$ A: X! [0 e! P& C! E# x% u8 b f& T1 G* Z
conda install Cartopy
. B3 G+ R3 y4 W& S( g; ]% I
' P( m+ K2 g8 X* D$ @
0 ?+ N! n' S& g' v/ b8 ~+ w
+ }6 |8 ?: m+ }0 O& L9 b% C$ m' I. b2. 工作在多图形(figures)和多坐标系(axes) MATLAB和pyplot都有当前图形(figure)和当前坐标系(axes)的概念。所有的绘图命令都是应用于当前坐标系的。gca()和gcf()(get current axes/figures)分别获取当前axes和figures的对象。通常,你不用担心这些,因为他们都在幕后被保存了,下面是一个例子,创建了两个子绘图区域(subplot): 例:绘制图中图
. F% s. Q' ]( U0 s7 D* H- k, I, u0 y4 S& L* `9 y
$ L5 t& |0 Z0 u9 e
6 b, n* U- U. A+ m7 y+ {- L5 a0 m) ?6 X- . z3 t7 N1 v, J' p8 e' J6 V ]* D
- 9 K! n0 O/ A! R) x$ j
4 E' t$ i4 ~! G/ x: M
$ x2 J, N% N/ j
2 f" m% m; M% x4 { q. R' @
) k- R0 @8 p! N* A8 v8 [6 G
% D8 {* H& c6 a! ~+ b( n
5 t8 t5 i% P5 e( L$ H
* ?' f& z8 I& X: C1 i+ v
9 g2 h: D/ a' R1 T- C, t
7 v6 R4 ]5 r2 O9 t5 W" y
1 t6 Z# h d1 N6 q2 L& Q# J- + G& |5 m! N# u- I
- ; N' {* \" m m
7 Y9 X4 O1 r& T4 T2 N- F& q `- " P4 ^' A" P5 }8 I
) V' U% y" F$ R' J& f! c( M% f8 ^- $ ~7 z! y/ I6 S- L1 W
- 0 {" b' Y) c' t
- 3 n0 d( e# S, w# [" Z
) |. |9 W' | `# b) |) H! s
1 f! }! p' W! Y# j9 ?$ A) X/ [- % e% l+ N8 i3 P) d! S0 e1 i% W
/ H- n0 D" v; U/ N ~7 \/ r4 e4 x0 Z! W" z7 `0 U1 Y9 F
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()
* V' W4 p R# S! D$ m$ r9 O
: p' w% a6 b) O% U7 }
8 D: h9 H; ~7 d8 |7 F/ v, a$ T* s k- z4 S9 S3 L
|