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

    " A7 v7 V# I7 j, t) f

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


( Y! O" S$ x8 `- v+ [
& V# n! L, k9 C; J

绘制简单气象数据图

  • 3 F& a+ r1 t; Y' }6 K" ], j3 v
  • % [9 A0 l' o* H7 A

  • 9 [5 ]+ x  h* w3 C: k+ K& G. f# r2 q
  • : r% _$ b" Z: S3 M& X

  • + v, d9 S0 g* t/ p0 S9 _* L
  •   Z9 _1 m7 _; S, @

  • ' Z! y) K- ^  O+ V6 S  ]1 e+ d

  • ; K# g" q! z" g7 ]9 o3 d. f& Z+ p4 E
  • & p9 p* u- r* L8 i! g" x
  • 9 H1 T4 ^. `: i" w
  • ; e. a' @- v8 U4 f! d7 X5 n

  • 2 C  b2 Y' _, v% q: L- e# b
  • + A1 r- x9 T$ C2 Q0 T) |

  • 1 f2 w/ f  V6 z4 [/ J
    ( W+ E% o0 v; p/ S. u2 S( T1 c1 U! 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("画布")
$ Z8 Y' W/ o* z6 M8 h

3222ca850649b6f730a155691403ec39.png

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

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

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

. E. l5 F2 y% {. H
                               
登录/注册后可看大图

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

a9db2c0d586d2c65693594bef673005e.png

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


  • 0 u' Q0 d! u, f" g) f) w% {

  • " }8 g' M4 J- `1 |

  • , L* E# Z) b" }  [% E0 d
  • ) G9 u4 q# u% S5 B5 F& k
  • 9 z: F2 N* T$ Z- H9 [

  • : u/ j% H5 [  z
  • . X8 h0 w4 Q6 X/ I

  • 6 V' O- ^' j6 f5 ~2 p

  • % k, d  t# c% J
  • * f7 m' C# f6 m  u) F

  • ! X3 W# D6 s6 k2 |$ _6 i
  • . r2 n2 e, T0 K
  • % K! h: G/ X2 a" X7 w6 I8 x
  • 2 y$ V: v0 |/ N+ |1 A, V

  • * W' D( W6 a3 K4 F! O  b9 J

  • 2 C- [9 a& k, c6 j

  • ( c6 f3 p$ O8 |" A& f

  • . I4 j/ ]8 E8 U! f0 i9 ^/ }7 S  }

  • # [9 g! D. J) x4 \
  • " c  w" Y4 e- \' j  o

  • / n+ @& c+ B: w; o2 W2 W4 M5 L9 a( D
  • 5 e5 \" T& B" b6 L9 T+ ~% _, Z
  • $ H7 q+ Z- X1 X
    4 E2 [/ t6 d( D, F1 h# [6 L$ B

######引入库包############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()
- P' ?8 \: s7 E" \0 z5 U

. l' j1 |% k0 k0 ~9 x. \

' {( k4 b1 v2 ]$ u1 i
                               
登录/注册后可看大图

$ ^( x) Q- \3 u4 N

例:线条样式不同:

9b568f4cade8c1d20e7d15589d727254.png


  • ( n& K1 s, r3 j' k6 g$ Y
  • ' Q  g8 I& V! f# ]( g$ j5 X
  • 9 v& L( b& I8 y8 x8 `/ D
  • $ a6 m: U& s9 ]- ]) J
  • 3 D: l! Z, `) q+ S/ G

  • 5 p8 C# J* Q+ O) H

  • ! ?$ W  p; r; X3 Q/ H$ O

  • ' m4 b3 }1 R% Q1 M6 O

  • ' S5 _$ s2 f7 X  O
  • / s6 ^4 i$ d# a# F# Q

  • ( X  f9 Z$ m. ^( {" C: M

  • 2 J9 w: Q# k" c+ V
  • & \; \/ S) y7 j; a+ A

  • 5 k' k+ E8 G4 U" `9 b- a& [
  • * {5 |% x' J  x3 R
  • ) `* I0 C# G% I2 v/ w) x- m
  • ( Z' b7 p5 V% t6 o6 u6 A

  • , y$ F  k- I; J3 V+ O& B8 b) C
  • 4 s7 H( W, p/ ~1 L/ N: T" O

  • 0 h% O; l/ G4 D5 g9 R

  • ( `4 d! k& h: E
  • 8 H( [; [9 E8 m. H
    5 M) Q0 C& }9 c* p1 u; W

######引入库包############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()
: |5 T+ U/ f$ W( O

, e5 a3 H. l- C$ m# b" R

; d% A" a  o: l
                               
登录/注册后可看大图


0 s( ^9 ?/ `0 O! K; ]6 ~2 \( ~4 b

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

9d9110a408fbe81329b7cfec01cfda76.png

  • $ u) |# C' m& N# x! x  J
  • % z( E0 B; S) H- ]; S$ h4 ~
  • & S  E7 P& E! f, e/ D5 ^

  • , k8 ]+ O' F" I2 X7 U

  • & e( s* t- d: ~7 G# n
  • . ?3 P) `: h% \# Y# H
  • ; L. G& `$ r% n" N( H9 |

  • 6 I9 r8 y5 Z4 N3 H: |
  • * s1 G' Q" P# k! w3 i4 ?

  • ' ], z( a' ^! z2 O% o4 g

  • ( r+ _3 I; Z7 P6 ^1 g7 I9 e" V

  • % D6 C) c0 Z" @

  • . \; ^1 o/ D% M/ i( V! l
  • * r8 b4 y5 l/ T7 i: q# N! a/ w
  •   h- G5 z( y. Y! y$ r% ^' I

  • 8 b# }! V( c# v) ~

  • 3 ?- [8 N$ w+ e& ?6 r6 O3 v  h

  • * l4 X. M( e7 r: L
  • 8 G& K$ _" ~2 h3 M/ U# D* _0 L

  • 5 t8 J: U; O" y( B: r" E8 O' @
  • 3 E/ }) s3 A1 P# Q$ _

    0 I( f) B: X' k" y* E9 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
快速回复 返回顶部 返回列表