收藏本站 劰载中...网站公告 | 吾爱海洋论坛交流QQ群:835383472

[Python] 【气候软件】Python7:气象数据可视化的绘图基本流程

[复制链接]

气象数据可视化主要依靠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("···")

    " u9 Q6 ~6 e% X5 E

只要按照以上六步,基本绘图没有问题!!!


& h; o2 z" Y+ x, O" v: A5 c6 [6 `1 w# e' l

绘制简单气象数据图

  • * D$ D2 ^- \" V0 O8 d; r

  • : V' v0 o8 |. _1 O' {; z

  • - M- A+ @3 E" f  g
  • ; m) \( _& m) p8 {5 V$ P: m
  • # Y* V& {; D7 x( Z4 E
  • . L! P' ]' _5 c2 b' \$ i

  •   v  c  ~/ z- M# V
  • 4 n) M- }) s5 F8 r

  • + {' K+ S0 x- N0 H* B4 R" j

  • 5 `! w+ l9 ]' ]/ _

  • 8 p4 H% j1 i7 _" i6 _1 ?
  • ) e9 ~; y, [# k- \
  • 3 \+ S4 F7 X) Y

  • * C% f9 Q0 l; b5 e9 H7 [
    9 A( p" m5 e5 w& n) {+ D$ u4 P( t

######1引入库包############import matplotlib.pyplot as pltimport numpy as np######2画布############fig=plt.figure(figsize=(3,3),dpi=200)######3虚拟数据########x=np.linspace(0.05,10,1000)y=np.cos(x)#####4线图命令#############plt.plot(x,y,ls="-",lw="2")#####5出图#############plt.show()########6保存图片###########fig.savefig("画布")
, o# F* d1 G! X3 H  L6 b- F3 S

3222ca850649b6f730a155691403ec39.png

备注:创建了一张画布,figure里有两个常用语句,一个是figsize=(),一个是dpi.

figsize=(a,b)语句里面有两个参数,分别设置画布的长和宽,单位为英寸。

dpi为图像解析度,过低的话会使图像模糊不清。

6 I; E7 J, Q9 K: N
                               
登录/注册后可看大图

基础的常用绘图命令有折线图(plot)、柱状图(bar)、条形图(barh)、散点图(scatter)、直方图(hist)、饼图(pie)、箱线图(boxplot)等等。

a9db2c0d586d2c65693594bef673005e.png

这里的数据引用的【气候软件】Python5:绘制气象资料的多区域子图里的某地1979-2019年平均气温为例绘制两个站点气温时间序列。

  • $ Q0 z. u' @# E) e6 }. D3 `

  • & x3 P! M# H8 r& Z( y

  • , P9 j9 u  ^, Z8 q
  • * C1 G& S/ x  ^/ k* K
  • 9 G% z# D& Q' D0 \+ {9 U: L" }. x0 D

  • 0 Q5 L; S9 @3 ~) G

  • 7 T8 l, j4 x# [/ r! r' O
  • 3 U. O" K1 F8 @$ J( N" ]
  • ! ^, }1 G$ ^% w: v, v
  • + o  P( u7 m( S/ D

  • 4 ]0 w# G2 M) v, F
  • / m. `: }" J1 E6 R, t
  • : m! w! i' A2 h- I' Z! a

  • 9 u7 m/ `1 m& Q# P& I8 d

  • ( n7 k4 R) e* P; ^1 _! n
  • , Y$ h) n# Y0 W; G4 d5 e
  • : X: V* Q8 e- T# q
  • , x' ~; ~1 C$ N/ x% j6 h/ i$ V% d
  • * |, u2 p0 L0 T8 {5 U7 {

  • . [; [% a. t' R4 g$ M; B1 e

  • 6 n0 M4 c6 g- E) K7 a# G+ R* ?0 E
  • / F; e: Q; k& ]8 \$ W8 F

  • ( I; B3 X$ s3 V  F5 r5 n' a( u/ X* W- L

######引入库包############importmatplotlib.pyplot aspltimportnumpy asnpimportpandas aspd######虚拟数据########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######画布############fig = plt.figure(figsize=(10,15),dpi=200)######划分子区域############ax1, ax2 = fig.subplots(2, 2) #####画图#############ax1[0].plot(x, y1, ls='-', lw='2', c='k', alpha=0.5) #折线图ax1[1].bar(x, y1, ls='--', lw='2', alpha=0.5)  #柱状图ax2[0].barh(x, y1, ls='-.', lw='2', alpha=0.5) #条形图ax1[0].set_title("plot")ax1[1].set_title("bar")ax2[0].set_title("barh")plt.show()
! h3 Z8 u/ i0 \7 O

. a* P/ f$ D2 `  N9 O

% f: j; `) x/ }# h, ]$ W$ O+ a
                               
登录/注册后可看大图

* N( E0 q0 W1 A/ }. O! Y

例:线条样式不同:

9b568f4cade8c1d20e7d15589d727254.png

  • ; S/ ^" h4 p: s* J1 K) K
  • + P! y3 V/ o8 C3 X* k: {/ z6 `

  • ! ?! z& ~4 M, c. h" `
  • ( O0 A/ A' T) U4 h: a

  • / g* l# N( x' w# c
  • 9 q3 E& m2 y+ ], O7 e

  • # {1 ]3 k9 K$ [, `3 N

  • 2 x( q1 I5 W/ a4 R  y: x: e2 V8 o
  • * h0 b: y' {6 b
  • + r- l7 N2 D5 p5 h& S% z( l: ^( k8 r

  • * _* o. u3 u) a2 ^4 Q7 p1 \
  • * _8 ^6 d9 l) Q' z. `2 _

  • ' t- {% ~' X/ I9 X% N

  • 9 O. m/ L/ b) S8 o: J; H
  • / _3 y& S" R5 ]* k# M
  • 6 u( `, J( G) S1 W( E
  • , J! x$ x! N5 h" O9 T1 O3 W

  • 6 `" A1 W0 d3 y: h3 i
  • 2 _9 i; D/ j: b

  • % m& N% L8 H0 w  e
  • ; h& H+ K! T+ x

  • ' J. p1 c5 ^  G6 I+ q, x
    5 c) B+ R* a' ^  ~5 Q( x8 E2 {

######引入库包############import matplotlib.pyplot as pltimport numpy as npimport pandas as pd######虚拟数据########x = np.linspace(0.05,10,100)y = np.sin(x)######画布############fig = plt.figure(figsize=(10,15),dpi=200)######划分子区域############ax1, ax2 = fig.subplots(2, 2) #####线条命令#############ax1[0].plot(x, y, ls='-', lw='2', c='k', alpha=0.5) #线条为实线ax1[1].plot(x, y, ls='--', lw='2', c='k', alpha=0.5) #线条为虚线ax2[0].plot(x, y, ls='-.', lw='2', c='k', alpha=0.5) #线条为虚线ax2[1].plot(x, y, ls=':', lw='2', c='k', alpha=0.5) #线条为虚线ax1[0].set_title("ls='-'")ax1[1].set_title("ls='--")ax2[0].set_title("ls='-.'")ax2[1].set_title("ls=':'")#####出图#############plt.show()- s1 Y% g4 P5 J: h% o

; ^3 x4 G; O# a8 i; {


. V& a+ q% T  \" J' r3 y; v                               
登录/注册后可看大图


& E( l' j1 @! s

例:线条的透明度和颜色不同:

9d9110a408fbe81329b7cfec01cfda76.png


  • 9 y8 L3 }  p/ r9 Z3 k4 h6 t

  • 3 _2 u' v6 c7 f4 g' E% d4 M& C

  • $ Q( @- ?# Y/ w! U1 G
  • 8 t; `: ~1 l9 d# B" z3 n* \! q
  • . m& e/ v7 Q" g

  • $ ~6 s3 k2 m4 L& ~* i& U7 X

  • # I: Z( g: B2 a9 f, y
  • . A0 k& r& l. O, q
  • 0 E9 M# J. _7 ^5 m

  • ' m6 [, _- X' Z$ e! H

  • " j9 t  G0 |* B) e( E
  • ; E6 x7 E& w8 z: W+ {

  • / P! E/ D( z4 U/ c, g8 x( ]) w
  • 2 L. m! O8 r% }! N" z/ V

  • 4 `" v7 m7 b  h% E& P8 ]6 W" q

  • " h: Z  N. G" u$ j6 }

  • 6 h' u1 s; W0 H3 m3 f
  • & G; ]. w& a: W! W. r( J

  • 8 }; J- H/ [  n* ?

  • 7 V. ~( @0 g) q/ b6 X
  • 5 E/ ^$ k8 w+ p9 g; R
    + T7 i8 s! P* R$ Z% X6 ]) W- T

######引入库包############importmatplotlib.pyplot aspltimportnumpy asnpimportpandas aspd######虚拟数据########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######画布############fig = plt.figure(figsize=(10,15),dpi=200)######划分子区域############ax1 = fig.subplots(1, 2) #####画图#############ax1[0].plot(x, y2, ls='-', lw='2', c='k', alpha=0.5) ax1[1].plot(x, y2, ls='-', lw='2', c='b', alpha=0.1)  ax1[0].set_title("alpha=0.5")ax1[1].set_title("alpha=0.1")plt.show()

回复

举报 使用道具

相关帖子

全部回帖
暂无回帖,快来参与回复吧
懒得打字?点击右侧快捷回复 【吾爱海洋论坛发文有奖】
您需要登录后才可以回帖 登录 | 立即注册
有风
活跃在2022-10-29
快速回复 返回顶部 返回列表