|
气象数据可视化主要依靠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("···")
" S+ U0 P& `6 k# u/ W. s/ n! ^
只要按照以上六步,基本绘图没有问题!!!
( o- E! J, n0 I1 \" U
+ F6 N. d8 {5 b! q. zCartopy是一个Python包,用于地理空间数据处理,以便生成地图和其他地理空间数据分析。Cartopy利用了强大的PROJ.4、NumPy和Shapely库,并在Matplotlib之上构建了一个编程接口,用于创建发布质量的地图。cartopy的主要特点是面向对象的投影定义,以及在投影之间转换点、线、向量、多边形和图像的能力。
, ?. S1 T6 Y4 h# T3 Z绘制简单气象地图 Cartopy公开了一个接口,可以使用matplotlib轻松创建地图。 1. 使用anaconda安装Cartopy库:
5 A9 h' j1 U' J( E0 r- \$ k. O3 H2 L
conda install Cartopy
7 @1 A+ ^/ v! p3 ]- u
1 w7 a% X9 I( o4 A+ A7 n5 ]: w3 `* v2 ]/ \; z0 p
U2 `& y- R/ X- E
2. 工作在多图形(figures)和多坐标系(axes) MATLAB和pyplot都有当前图形(figure)和当前坐标系(axes)的概念。所有的绘图命令都是应用于当前坐标系的。gca()和gcf()(get current axes/figures)分别获取当前axes和figures的对象。通常,你不用担心这些,因为他们都在幕后被保存了,下面是一个例子,创建了两个子绘图区域(subplot): 例:绘制图中图 - & P* I o% C/ \ ]( U
0 `0 l$ i. \. f1 [
3 Z. k# }- u" z+ m( h$ ^4 A
5 Y8 L! T! G* u0 _4 ?: b- % `& V, M) |0 M1 d& S9 e& c2 @: h4 p
- ' `4 J! l& D' N: Y7 i9 z
- / a8 |1 }# x: Y7 J+ R
5 L! m5 g) H6 H+ K; v$ N" F# Q- * \% t3 B: B9 g5 }" m
- ! w5 ^) |! a3 D; ?! @) i) ~8 @! L
- 9 L3 w& q0 o T5 @
- 1 d7 v( Q- [( n
- , s6 p2 ~- k! n1 t& j. |
- * X5 B5 o+ o# f! ]9 O9 m5 L
: e5 k7 c0 C: Z, R! C, L% T
, P1 Z% K6 S1 V& H- ( }& q2 b' o; z$ {& T
1 A6 P7 D+ q" x; p7 g7 m; f
- _- h6 T* G& n# E9 U
, W% P; I: p( |/ z3 t" ^- . L5 @* h" U% G: `1 F
- 2 B. X! }6 v9 Z( E0 _. v
- 6 ?1 N2 ~! @6 C% [2 e5 X
- 5 I$ [4 Z3 `8 W3 q6 G* J) o
- 6 s% }, q# S& L% L6 a' r
6 Y1 C. t& x3 f) C* y% m
5 u: ?! L2 O0 n/ O+ |
: o$ r6 U4 x) i& n- ~1 u- w3 l8 }+ \/ H s7 E/ F1 Q+ z
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()5 m$ D: J" V A8 E, [" M0 D3 ^/ o. x
) \* a- U% O3 u4 y' L% {3 ~8 i
# y7 r" g+ z9 z1 U8 Y# }; L# }7 N9 S6 g
|