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


    : j2 B  J7 F5 x$ ~. X

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


5 Q* s$ v" f5 a3 ~' h0 @
& d5 I' Z2 l9 |' q, R# N

绘制简单气象数据图


  • ( [. ~& a; Y5 y' s1 R5 X
  • $ E0 |  M+ L. X0 b9 Y8 N
  • + B" }  ?2 C3 v6 a% @- s

  • 0 W/ }6 t7 A& P4 i

  • ( x1 D$ N! @$ Z3 {0 v

  • 2 h4 J8 V9 ?  x0 d' t# I0 a* A
  • * Q* b5 z" p" A9 p- ]# C, c7 E6 A
  • 1 P! r- d* X- L. ]( P
  • 0 M/ l' z+ ~! B9 W# |2 G1 c- L

  • # G8 K+ ?0 V/ E( f
  • ) C( q7 B) v9 \5 h+ X
  • ( d0 \% n% O7 u' g: }7 @) M: v* t# M4 r
  • , \  O# H& O' ~, t5 b! w+ Z

  • 9 v7 f' B/ x0 h: F; O6 A  l: ?- Y& W: ^1 ]4 H

######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("画布")
% i5 V1 Z7 `2 \8 o1 ?, F

3222ca850649b6f730a155691403ec39.png

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

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

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


$ z, [, K5 }& ^$ K6 R3 {& c" r                               
登录/注册后可看大图

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

a9db2c0d586d2c65693594bef673005e.png

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


  • + G0 ^5 k( O( u$ H7 g

  • 2 u# R" I% ^, x6 v/ n
  • 8 ^2 g& e4 s+ g. [9 F* v

  • 6 i" A& D4 t8 s  Q
  • , C8 Z: Y2 C9 A
  • , c5 _8 J/ ^1 F2 c. X8 x
  • . Q0 p9 X3 o9 T/ k* f7 B% q

  • # u. G9 [. F, N/ ]

  • ' G% }5 V+ l( a5 R

  • . h# ^. i4 o* [
  • 5 C7 Q' I+ R) M

  • % `" I6 s- o. i9 B& P
  • $ @, H% V' H6 [4 w: b  r+ V
  • 6 l3 s) ?- y( h  Y1 [- u

  • , e3 X# d! L+ S0 ~1 n6 `! x

  • 5 Q' |  j* n+ b, V0 F  u

  • 9 Y, A; b( L* l- v2 p: i

  • 5 D* Y( ?  g9 F4 I
  • 8 q6 ?3 W, u; a3 {9 `$ A; s: b
  • 5 V0 P& a& ^5 m; r: D

  • / F  x6 h6 u- J5 N/ n& f- X( D. Z+ m: i& w
  • # _3 b- o- ~6 [% l6 x) N  g: Z
  • " O- C% y. b' ~3 ]6 i

    : k; Q! A* ~. w! W# V& W5 V

######引入库包############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()
/ @! M& Y! h2 M: r% \5 y


; E7 x# h' ^* B5 P


: [! \2 z) B7 ?) P$ q                               
登录/注册后可看大图


' L% {: I1 A" g) B% m& k" d

例:线条样式不同:

9b568f4cade8c1d20e7d15589d727254.png

  • $ B- ]1 E) s7 A9 |5 B6 z0 @
  • 7 {/ m! \4 T, t5 J- y
  • 4 L0 P; p9 O: D, L" ]
  • ' \  m1 n7 ?6 F: r% J& |1 ]

  • 4 l! ?8 B8 K  B( I1 {, e
  • / ?" C1 c1 w, l' N

  • , `* f- ~3 T1 M" X( U

  • 0 N, @8 s9 U9 |' q) c/ y  [

  • # {! D' ^2 ~/ u! c' m
  • / M* W: y! a4 X7 k* `
  • ' y" Z- P8 A2 k8 n5 K

  • / L8 W8 b$ W( c) E
  • . g, `4 n- J8 y

  • 3 |0 |2 m5 a4 N5 [. _* t
  • # f; @- R7 V5 i0 c
  • 7 Z6 a' t6 D9 k3 I; x

  • 5 L+ E! n2 }5 ]7 ?; g* c  ?/ K
  • 2 t  Q1 X) L+ p0 y3 h% x1 t0 \4 m, E

  • 7 i& C! A2 z& A! J! z! f% r, \  X1 C

  • 2 P% y' q' i/ `* l" ]
  • % U* p! x& b& q3 n7 V& Q

  • 0 g+ F- P3 ]& ~" K/ `
    : `0 H% L( E* @/ |2 K& k

######引入库包############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()& w/ }5 }8 [: Y9 s/ _; Y0 N! H9 p


4 s: s+ {; s7 C% n8 }/ m) q6 z3 ]

3 J5 K* ?% `+ n1 O4 x8 K: C# }
                               
登录/注册后可看大图


8 n6 H' P1 F  l- C! @! v3 Z7 {! G" R

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

9d9110a408fbe81329b7cfec01cfda76.png

  • 9 F# b5 J, p) q3 C
  • 6 A3 A5 }8 D" f7 M

  • 5 ^9 @) x1 F/ Y- Z+ }0 f
  • ; k4 {$ C( b# z7 c8 w$ _1 |

  • ; U4 l( X. B% a
  • : I% ~! t/ y2 s- _0 v, w, v2 T

  • . V8 C3 e" Z0 U
  • ( o% q, _+ |6 C, K
  •   n- Y6 F+ q$ _7 F1 V& s5 v

  • ) T! w6 ?& |) C9 \2 u1 x

  • ) H+ w; A7 |+ K. R3 b- T7 B

  • * i/ s2 P$ q( }: q

  • # l( K% F. e# X- O

  • 4 d# X+ Y0 L  r0 _, z' s) n7 E1 ~

  • ' t0 m& J1 A' P% E, g6 ?4 Y9 M# F

  • & m( F" \! p+ d' ]3 X
  • 5 q/ r. H! B1 O% R$ l! X

  • * F  O( m0 N; U  ~6 D
  • * H! G. v0 T, ~; v) h

  • 1 v' g' U- @- D( Y6 ~& a

  • . B) B6 [6 u9 z- `4 M' h$ r" Z: m

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