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


    ' P6 ?; {- D9 `- ?6 Z! w' X

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


* U# J3 m% M- V+ m3 b5 q  j4 u) T4 c7 L

绘制简单气象数据图


  • . S3 P1 V5 Y  N6 }

  •   Z- d7 [- J2 u' ^
  • 6 V1 M1 V3 \5 z

  • : @+ w6 [9 o* v
  • 3 x2 H5 B/ w7 q6 v  b% x

  • 4 v0 y  R- [5 j8 P. ]) a  o
  • 9 F; U+ o  `) Y7 s5 k3 Y

  • , }% A( m- t: ]8 I/ m

  • ( a0 |& o  l2 z5 y2 f6 O

  • , p* ?9 j8 S  v- d1 g% e3 p

  • * T5 [% i4 s5 a- A  k& s

  • ; O& n+ d6 ~+ D
  • 5 E' y1 U6 E# W$ c6 Y- A

  • ' Z( ^& X  g# }& `: \# A( ]5 N- P! r* k; e  m! |9 ?

######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("画布")6 O6 f& u1 h- u$ b7 h" V; \

3222ca850649b6f730a155691403ec39.png

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

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

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


# m3 B" r* U: {; E" N) K                               
登录/注册后可看大图

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

a9db2c0d586d2c65693594bef673005e.png

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


  •   `* F  s2 L7 q1 Q) `5 M! T

  • ( n5 g+ K$ A  }" M+ S2 h

  • + j1 r- B+ ?9 L# x8 w
  • 1 f! ~9 ]- @* u' F' m' |
  • ( C. a/ T) P' @' z- C6 L
  • . f  w5 ?( A+ E: k4 [8 `

  • & T7 M9 s- N) Y2 A2 W6 @0 ~) z
  •   z* b3 E1 h: z: O. e' }( W& p

  • $ W3 D2 k: y: j# |4 b

  • & @5 v* F+ [  N4 o4 ?5 y- y% d

  • $ ?. O4 d, U" }8 c+ I9 T& n

  • & ?8 W5 y% z# I3 G' X$ W8 B, W
  • 9 g! G5 g; q1 e" }

  • . }, M) E5 O8 |: W5 Y  I/ Y& {

  • # ~; i/ _5 S2 g+ d

  • - n& u# p6 m6 ?8 O

  • ' R7 H' p( Z4 G7 Q2 c
  • ; F' S) _2 M5 V7 {. Y& W5 q" ]  o
  • * J. _# R4 q6 o4 A' i: s, g* A
  • 9 [$ c" }8 Q( S3 v/ V
  • / ~, |1 b2 r1 ^- B# O& N

  • 9 E7 K3 O4 V. ?/ ]8 x

  • * @4 u5 a5 B, Q/ l# d* U9 k: s. d! a, W3 j0 g/ R+ C

######引入库包############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()
% i  H' {3 C# H

% C. x* `1 p- r2 o2 B7 f( S0 a


( ^8 V4 n: b# p5 T                               
登录/注册后可看大图


$ e# m/ |0 t* o1 [

例:线条样式不同:

9b568f4cade8c1d20e7d15589d727254.png

  • 3 @( n9 V9 a& _+ w0 @

  • 7 Y4 I( ]5 d; o/ x. v

  • * ~7 q* `7 E- D, q$ s

  • - G8 _3 K" U+ f
  • . ^/ L/ ?  y' \. K# ~% s4 d

  • ' H/ J# K3 u6 |& w/ U, s

  • ) s% a' M4 a# {

  • 0 q( G  h' d3 E/ S

  • * u- D; P( G5 A! \- |
  • 7 Q: T0 S( R8 W+ @# K

  • + f6 A+ Y2 S, s- v/ `( `& w( N8 B

  • 9 W) U- l7 G3 G' F$ `* k- e9 ?0 f
  • 7 ]: X+ Y+ w# L; d
  • . h+ M& f+ R* q5 `8 h% z: R
  • : Z# g5 S$ ^+ p5 C/ j) d& D  B+ ]

  • $ g$ n4 H4 ?) e( e: Z: J: @
  • 4 K. t, l2 v7 ?1 q3 N

  • . _/ X  F2 z% Y0 _7 A

  • + A( P8 R  m2 v1 C0 e

  • 1 c. Y% {5 e3 g

  •   j3 a' r2 o, v8 D4 L

  • / t+ {0 z# l8 R/ [2 g- f" V/ i" c8 L2 b9 W1 b

######引入库包############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, v7 L5 S8 t* s' ]! i

, `: h% H) n9 q) K+ t* U

# {( Z, o$ l! ~- X6 h: H9 G
                               
登录/注册后可看大图

0 G4 G( `5 K* b- v

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

9d9110a408fbe81329b7cfec01cfda76.png


  • 3 P6 v* |% ~2 b, L. E' W
  • $ X8 a- I  H) h# a) q
  • * z* y: ~6 Y. y

  • - h' i2 ~: u0 f3 |
  • , ]% ^/ }  U0 x8 n7 ^0 s" W

  • " E( a( \. Z/ v
  • ' y: h& A1 e9 V" c) c
  • ; H, ?' p" _' O* R' [
  • % X7 j3 ^5 {4 I+ D, g

  • ) K' g1 S- p3 Z" l
  • + P/ }, @: ?# F/ K
  • " L+ s% g$ u( r) w" T' O3 ]

  • 4 @. G9 `9 `9 }. ^' x: [4 @: W

  • & F) G1 S& t1 T% S# K( B
  • 4 r. _( w* c" z/ E& ]$ O* a. Y

  • 3 [4 K  _, A$ S! y/ l
  • + [- s6 h! D" O9 |$ K
  • 9 n9 y, ~) B: Q9 I6 r: P6 s; U
  • , a. Q# H, W6 p; }8 Z" t$ o
  • 6 [; E5 j! ~, U- \7 ?- i1 d
  •   h- B$ s1 g9 e0 e4 m

    . Z8 z/ T0 Q5 p1 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
快速回复 返回顶部 返回列表