|
气象数据可视化主要依靠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("···")
5 B, Y3 x3 ]& j, \; _8 q9 D
只要按照以上六步,基本绘图没有问题!!! . y. u; `& ?& ?
- K8 h+ s' j. V2 {# @/ @& Z# Z
Cartopy是一个Python包,用于地理空间数据处理,以便生成地图和其他地理空间数据分析。Cartopy利用了强大的PROJ.4、NumPy和Shapely库,并在Matplotlib之上构建了一个编程接口,用于创建发布质量的地图。cartopy的主要特点是面向对象的投影定义,以及在投影之间转换点、线、向量、多边形和图像的能力。 ) E7 {2 g) M7 J5 n$ r, \
绘制简单气象地图 Cartopy公开了一个接口,可以使用matplotlib轻松创建地图。 1. 使用anaconda安装Cartopy库: - 2 i& i1 Q' A' ]8 o! {
4 r& z: V' k( d
conda install Cartopy* V! n* Z8 o- b C2 f
2 X. G7 S( L, |2 p* m$ ?7 z" s9 m" M+ `+ h1 J- R. u5 M
' Z9 ^( Z- U; R+ L) Z R2. 工作在多图形(figures)和多坐标系(axes) MATLAB和pyplot都有当前图形(figure)和当前坐标系(axes)的概念。所有的绘图命令都是应用于当前坐标系的。gca()和gcf()(get current axes/figures)分别获取当前axes和figures的对象。通常,你不用担心这些,因为他们都在幕后被保存了,下面是一个例子,创建了两个子绘图区域(subplot): 例:绘制图中图 - 8 R. J& F& I. G, a( _# A; \! P
- 9 {% L4 d" H3 ~% b, e: S* e
- " G+ q9 T0 ~1 |9 p$ G8 K
+ ?; {* E/ W( E( p- 4 Q- a" F1 Q5 E- r
- ' R* u3 O# w1 g) S7 |- t
3 P+ d8 q; p- X P4 \
( L$ t/ @; L# ?1 k- \/ \
# S j+ i+ S& ^7 Q- W2 h- * ]# C; \6 A- @+ k0 G4 {* x
- 6 H+ X A! C8 G' A3 n, X. y, k3 V0 n3 f
( P# {+ G5 n+ {/ D$ j( }" c- G# w0 [- 6 a/ e) `. {9 `1 h
* y% w) ?* ?6 A) M4 W. S2 S- % a" y+ w- X0 g- B M" U+ V
. Z8 y* y( Y* Y r/ d
6 Y, ^8 O4 J6 Q/ W; Y- g- 4 G7 V0 S; {3 L: }
$ L% k2 L# _# A! G
5 A) R0 P- E, X) g- " X. W5 Y4 ] D3 b! k8 A K
- |- s$ Z# O, w* j# j# ~
- 6 S9 Y/ Q- e! E! h7 B
, I7 d6 V' x5 \0 m1 t @
0 |& U; [' E6 b3 M
/ w& ?2 z# b& F$ M& \, G
, c; q& I0 B' V. S6 H- w- / z5 F$ [. B! v) G( V7 M# B4 S' j9 v' _
) V, e1 _; \6 v* P, n7 ^; D! B$ 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()
/ a! P1 j, I4 X3 T
! i0 a# y; ?! {& v% P3 Z& y n \- K) B! J
% {( V R: x8 c; @ |