|
气象数据可视化主要依靠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("···") ; a+ ^2 a. M5 @3 M1 ~# _
只要按照以上六步,基本绘图没有问题!!!
0 [" }; T6 U. P- M2 S2 u0 u
) Q0 T5 S6 \7 c' p" WCartopy是一个Python包,用于地理空间数据处理,以便生成地图和其他地理空间数据分析。Cartopy利用了强大的PROJ.4、NumPy和Shapely库,并在Matplotlib之上构建了一个编程接口,用于创建发布质量的地图。cartopy的主要特点是面向对象的投影定义,以及在投影之间转换点、线、向量、多边形和图像的能力。 {! S) [% L4 G* ` E: e: m
绘制简单气象地图 Cartopy公开了一个接口,可以使用matplotlib轻松创建地图。 1. 使用anaconda安装Cartopy库:
F0 z, ?5 f. T. t! I
3 u3 w& U3 S; [% Z8 I$ G8 L
conda install Cartopy- y! c+ O6 g" R5 U: ~, G
5 V5 T2 v) x& F% C( n" r
2 Y4 W9 v. ]$ B# ]
" V; E, x1 Q2 w$ z& Y( B- i4 ]2. 工作在多图形(figures)和多坐标系(axes) MATLAB和pyplot都有当前图形(figure)和当前坐标系(axes)的概念。所有的绘图命令都是应用于当前坐标系的。gca()和gcf()(get current axes/figures)分别获取当前axes和figures的对象。通常,你不用担心这些,因为他们都在幕后被保存了,下面是一个例子,创建了两个子绘图区域(subplot): 例:绘制图中图
/ U- i+ s2 i. q, O, k: |0 ?4 H- % f4 Y9 n' x+ A& s. u2 ^4 t3 O
1 V- ]3 s$ O4 w3 ~% N1 S0 l" d- % V, {/ G; J9 [( z8 S
- , u* A3 A4 }# R! F, j( |" y i
- ; [) ]9 V; I# S. g1 {, K
& T! n- @4 B: P7 a+ u- 7 o2 m+ b" i3 @- G: C$ V
6 i4 J! ~: w# p& h- : s. U1 m) ]6 M, Y- I4 c+ \
. A3 E' d0 H' F! Y6 t' q4 {$ U- 4 }3 V- I: O) P" L+ b7 R+ q
. u" `, R- f8 X4 L: H- 9 S' \ ]- h9 c7 N S8 M0 {5 C
9 s$ ?* }! v) d, l o3 D- 8 {5 r8 X0 o7 C
" m- c) v( w E2 O' q. A0 x) ?
2 A& U. p# {& G, U2 L- . r1 u. }; p' C! ?4 F! O0 Q
- - v+ I: c2 \: h/ d* q9 d/ U7 e* K
- 7 i8 j! e1 G* m+ u3 T
- # p8 N$ W2 z* {8 c- U6 O
3 o$ {) @/ B0 q# ]- + Z( C, y* d2 I# x B1 j
- $ o1 E: Y( p4 {0 }
7 d& f" Y9 F) A1 F7 J5 S
: k5 [* j" ~$ ~' v' T- 5 M. o, p* ?! |7 q/ u/ c
" f6 r! m" V9 \1 z# n
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()" G& O1 a) P2 b" X8 D) P
1 g5 d; Z/ e* l+ \' u$ R: g9 a
- Q( `9 e6 d% V9 H" a6 z
8 B+ }0 _) j# | |