收藏本站 劰载中...网站公告 | 吾爱海洋论坛交流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("···")


    $ F/ i4 o) @: ]# K

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

* A- J* r0 c/ x# F7 |

; L. Z2 S3 S5 i8 s) @

绘制简单气象数据图

  • ! t, Z( F! a! r/ y7 B1 I& i% x# C2 u

  • ) ?, R+ u% W# t2 g# J* n
  • 8 i1 W! S6 w4 a
  • 6 z/ K7 Y! `- ^  K% [* `! w: [
  • : q& |; l) C. \( B  b* W6 I1 T

  • / o5 O+ l2 r& a
  • 4 X& p" G- t5 p

  • ) T  k& P! P; {0 \. W( t
  • 0 P6 n/ q4 `/ }+ G1 `; I3 Q

  • ; L! u9 O- g, i$ H4 O! w

  • 6 x& U6 E/ B% t  W* u

  • - H% c: h8 j+ V7 P1 i/ Z) G

  • " g2 P2 j& k. s4 e) U0 E4 L: D
  • ; {( F( x- A# i" j, R( P$ b% z9 ]/ l
    # |3 Z9 U, I2 [- u+ z: w) N

######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("画布")
, M& S2 t$ t" V2 ~

3222ca850649b6f730a155691403ec39.png

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

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

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

5 R$ A8 o. H1 A% E3 y" E
                               
登录/注册后可看大图

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

a9db2c0d586d2c65693594bef673005e.png

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

  • / b& F& y# M7 E& Z" C8 h5 F7 K

  • ( W8 i  e% A% R5 W" o: m* ^

  • ; a4 r6 X$ s* c) i
  • ( c6 l8 G" {$ L: S9 _1 z

  • ! t7 U( |! r+ h# a. d
  • ' o) M' ]7 K- b; @" G' p
  • 0 _- ^( ^" K2 W3 F7 d  P

  • / ~8 R& [' |' o+ R' u( ^7 ^% c1 t

  • 0 n% Q" N5 |* ]% v% l9 A

  • ; ^% l9 o( a% R

  • 8 W2 L* n, |0 ?; e: z. g
  • 4 c$ s9 l0 p! q' c5 f( X
  • 2 U  _) _% ^* J

  • - p+ f. u# {2 ~+ }

  • , C% C. l* w: o0 [: ]

  • 5 d3 z- \" z7 X, y
  • ( Q2 x7 a  d: f: ?
  • " Z% c- ]1 y/ N+ d( o; {% H" l) \' z
  • 3 r' n- b2 J) x* ?

  • ' `+ {2 C# D7 ], i( \1 h. V

  • 3 N/ V+ ?3 ^" I  j7 d
  • $ _9 C1 c8 N! i. M( a
  • - u; n9 U+ N6 w- n& J2 r, a2 n

    ; N# A* Q+ N4 V# l% Q- z2 Z

######引入库包############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()7 I% R" T* k% r, X


5 J& a! Z; a- Q


: W2 J% H; g2 k                               
登录/注册后可看大图

" o' f5 Q, ?4 d4 ~% ^. p" i4 o+ l

例:线条样式不同:

9b568f4cade8c1d20e7d15589d727254.png

  • 7 T; {+ H: s0 B0 Q' A9 t% \

  • # N0 t( E' X- j) l* _1 `

  • 9 b! b* t/ w+ s, F5 z

  • 0 k) Y) f6 B+ _' A( {+ S

  • # N! x4 P% p* w8 D) A
  • ' @+ f1 ~/ t8 k9 S+ W/ @( s) T
  • 1 |* M0 g9 v7 T8 u8 H

  • ; X5 \* J" q1 {7 b$ `7 Y1 j
  • ( ~% d& b, u+ w; M
  • - A! `) A1 q3 |& P, K& P) n
  • 0 {7 v' E- k+ [/ [, Y" g

  • 6 J; e: t4 V" x7 a' d

  • - `+ X) F% Z2 v- h; E

  • 7 l2 R  _' M3 _

  • 5 ]3 J$ {* ^# C% z7 O3 \/ m9 Q

  • 1 {& S4 m& Z' G+ g3 |  {; @% J

  • : r* N( P( I, g# v
  • : X# r: n7 y) x4 n/ L, a& I
  • $ i' d: t8 U& z  ~' ]/ K

  •   Z% r, h9 R! a8 h
  • 7 e" t( n3 [" i5 I* T

  • - }8 S- ~: T2 k5 q' h$ _8 o8 K1 x6 D9 ?8 @5 e

######引入库包############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()
  l( t; ]6 g% ]5 V) e3 K; z

- X8 i! [7 a& ]3 O3 m

8 P' s; M7 i' i2 w1 f1 s
                               
登录/注册后可看大图


4 f9 U, d9 A0 d8 Q/ r0 o7 `( _4 [5 V

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

9d9110a408fbe81329b7cfec01cfda76.png


  • ) S" x  f$ m- G7 L9 o/ n* Z% u

  • ! |! J. ]: L$ l' P- c( N5 x
  • 3 V' r+ o! @& L

  • ! T5 Y( M  ~1 e" z
  • 1 Q1 p4 v/ O( ?7 N& ]

  • ) n8 Z, G- y$ j/ h7 y

  • ) E( B3 e  Y' ?3 J

  • # Y7 \# |  M( u  i

  • 1 g) u7 a3 {# i' Y# g- t; N
  • : k6 R: M  }' D6 a) r

  • % t2 L( a4 m; G) t& R: i, h# L6 p
  • 8 a, f& [" c. @0 }; \: k

  •   l8 A& u! Z  Q. G, `: K

  • % c0 A% ^' _$ u' G+ C4 c8 E

  • / q+ e& L  b: C: \( q
  • 9 M- q7 G( O5 t) Q! d4 a

  • * n- [9 o: l3 I  t
  • 4 o$ ?# a- S2 p  w: J- j
  •   Q' ~3 Q" k1 U. F+ n( T
  • & C+ \. h2 A: S4 i! C: S4 o( C& l* W
  • 7 T2 y7 H/ Z, u- h

    ) O# C; I3 r; K6 k) i& t# D

######引入库包############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
快速回复 返回顶部 返回列表