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


    ; N# T5 N# B4 {, A, v" k) W1 }3 k9 k

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

1 A. G  P  R7 L& _0 q1 W% c

5 M# _; g+ M! s- W

绘制简单气象数据图

  • 4 W& P- p0 p5 Y1 Q% H

  • 9 v1 _8 S  s9 @. d9 P8 f6 `" _
  • , X' a6 _6 m* z* _, T) i, N

  • & k  [7 J: J9 Q1 _6 `
  •   g, S% I( n- z1 Z

  • : T. p4 q7 N  D
  • ( s8 L' ~2 @+ A! {5 i
  • 9 g5 w8 O8 i) V5 c/ _9 n; C( y

  • ' \. K1 m$ D1 y

  • 9 m: i  W8 G6 n

  • ! _; D3 p- T& z, X: i0 r: b& C

  • 8 t* k2 Y6 u9 V" s8 G' w

  • & I/ k! F2 @$ Y( J
  • 5 E$ h3 Q6 g, p* U* ]) i

    / \1 v; V" N# N+ W* p4 P

######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("画布")
- Y% M8 U. P" }

3222ca850649b6f730a155691403ec39.png

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

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

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

  y" G3 o4 m1 R( c
                               
登录/注册后可看大图

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

a9db2c0d586d2c65693594bef673005e.png

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

  •   [; B  g/ R) z& k  v& i
  • ( z' G. r; D$ }8 U: Z

  • 2 b1 u+ [' ]' \/ E" {
  • 8 ~: ?6 d2 c! k" p, U3 W
  • * ]) R/ u" B& ]9 i

  • 8 W  J5 U( N9 p# I

  • $ F  w* b* J# D3 w* y& e
  • : y6 Z. a( N: _% z& H- ]# p
  • 1 ]  K7 ~$ L4 {

  • & Z6 s: O1 J! U! _' ~

  • / ]8 {. z( g5 [& z2 e/ h8 U

  • 7 z6 N' J/ I% }: `0 N4 a; u! Z
  • 0 b  I. {# j& D* `+ {2 x
  • ) |$ P" ?2 E2 T. j
  • : _3 m( d/ a" G
  • " o- i& D4 j' K3 G/ q

  • 5 F1 P4 _2 J- l* K5 {6 g2 }# u
  • ) b- L) t9 e% ^' X. A' I

  • $ |. E, l3 u4 A- M% M

  • : J9 `3 r1 z) t
  • % I7 i) B3 i0 S5 \
  • * ]2 B, A" g, T' u4 _
  • 0 Q! W1 U( N8 ~7 A
    ! T- T& \5 U- |

######引入库包############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()
* \' s- G: M* @% L, }" z/ G

2 i7 w& c) ?6 J9 U- K5 r5 Q/ W


8 c; e6 f1 G* H& n. ~                               
登录/注册后可看大图

. {# H+ K0 _# w5 l. R- ?

例:线条样式不同:

9b568f4cade8c1d20e7d15589d727254.png

  • ' X/ P; i3 O+ s6 B: Q' E' U; h
  • 0 V5 u  P) O9 y6 s/ s$ d4 x+ A: q: _

  • 4 s1 Z8 u1 z  |" c! }) ?$ I
  • ! w2 \) T: `( N& b9 {
  • ( P# D3 ?6 N! D) B% x

  • 4 Z8 k2 U% k. U  E
  • , D: S- i% Q: \' F
  • 1 F3 D8 ^* d" t+ r1 o. f9 u( Y
  • 2 V) [: E) |3 O/ L

  • ' T( F% [$ O; s/ M
  • 6 W2 x8 e4 k- z3 e$ N2 k+ F- u
  • , J, ^: L( Z& A0 k* w8 ]

  • + w- V( ?! i7 @! s
  • - M! e/ K: Q/ P; W% T% E$ k( h

  • & m9 X' D' ]3 f, p4 D+ [! k
  • ; N$ j! u1 e5 N$ F

  • . \3 ^+ K2 D$ M* H

  • , S0 K+ ^% [! N! [6 }* {6 m

  • , r+ D( X8 t! n( l5 U! U0 E

  • , Y5 G2 S4 o' D' S' v- U4 ^- F

  • , E  i- y1 \5 c& ~# Q$ i

  • 7 w8 @3 _" y5 J7 k) E
    # t7 ?% P# o$ f$ y; J

######引入库包############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()
/ C9 o+ ^/ B$ R2 b) P2 l9 @

! v, j. S2 R- g% @


# x: [$ j! E6 i                               
登录/注册后可看大图


# p9 u! \+ t; t, G1 o

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

9d9110a408fbe81329b7cfec01cfda76.png


  • ! p- f! B( b% C$ _) ~

  • . M4 F% z* Y4 e: y* l* J3 J

  • , O, E; c, k8 T4 e( B9 x2 }: V  W. \

  • 7 D0 |; c" K8 S9 p( D

  • + G( i& a2 M4 S3 J. }; B' |
  • - k4 y. q. @) f- J: @: G
  • 9 y) b% o6 {: g' G( r

  • # ^1 c/ M) v5 m- o- y
  • ' P+ {# t9 _, O! B' O# b

  • - q7 q( B, i- P8 R7 B
  • 8 E" i5 N0 m) K; g! f

  • 5 V! r( X! @3 ?! f& u

  • ; @8 V8 \* m/ Y9 b1 m) F" s

  • - I6 I# o2 e; S

  • 1 ~7 _1 ~# A: @/ m' {, v  W
  • " c( A9 k' q# X7 [5 Y' M& e
  • ' |; E# O# g" |

  • : v4 J# g# q$ q

  • / p0 ]1 j3 O  F/ ?- v

  • - x% }' f; s! ^- _; @% F& w7 W$ y
  • 2 c1 c! }' P$ {. P7 r+ J

    ! m9 J$ q/ M0 ?# V0 S1 a+ y

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