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


    % g! P. W! k% Q; T1 c

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

/ j' w8 W" j, h: u+ k; r

& w. c5 n' F4 e; V

绘制简单气象数据图

  • 6 f# u* Q5 ~1 q6 o) S8 e% t  y6 I7 T2 E

  • 1 p8 U+ U9 P: q

  • ( B. J! B8 [) \. F/ v
  • / j& m7 H0 [1 F. o1 Z

  • & t( t/ U; P8 R& i

  • - `& P" e" |2 W) A7 [

  • 0 m  u6 C$ L: P

  • & l) f/ a3 h/ N5 b" ^
  • 7 s5 f' E* U" `
  • 9 {: b4 N- x; D# H, {2 @7 R
  • , ~& J& W7 F8 T5 b# `
  • 2 H; w& w2 R8 j+ n2 d; a! O, P% ]

  • 1 ~, k3 D$ U# m' H" [+ Z( [3 A
  • ; S0 ~0 N8 P: _! Q  _9 _% S
    / h  Y9 w( B) Z* f9 o9 x

######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("画布")! z# F- F, ~8 L" l

3222ca850649b6f730a155691403ec39.png

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

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

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

1 T+ f9 F7 K0 s7 F, E  L5 t
                               
登录/注册后可看大图

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

a9db2c0d586d2c65693594bef673005e.png

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

  • 5 T" N- \9 I- H9 |6 W2 c6 v' G
  • * E. E  J! x( D* O+ f% W! F
  • $ Q; I7 m) z1 h

  • 7 W% K& {  h3 J1 F

  • 7 T) D7 `* }4 Z3 f( P

  • + R$ L3 N# C' s# C2 s
  • - o' V* G& _1 h
  • * J' I( C. x2 m" O8 b  K% v

  • 4 q! r$ M) n% j2 e
  • + V; }" V/ u  R3 `# Q" a5 B, w
  • % i* y5 Z# {  }9 V* l' `
  • 2 l8 p* |) t1 y4 r

  • . |- W# `# V4 R7 L# w6 x
  • + ]! x, ~0 n) S( \, ?
  • , i6 J7 R& q* ^, C, l: I2 b( \5 V
  • ( r, ?, j0 k, p! E; o0 O- B* a

  • $ D7 W+ H* [( A
  • 6 l1 }1 Q; m  |4 I+ j2 g
  • 5 h& a! a! R9 }( E( P0 ~

  • * m4 m% }4 r  S& ?
  • # m) g. N, v% {, U: ?

  • . ?* k9 e) @% B  V  k

  • 9 o2 y  L- ]* e# o2 w% ~/ S8 V+ Y* X7 r0 e

######引入库包############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()8 Z* L, I$ l' ~+ X' ^6 y: R

5 t" j$ }8 K, d, p3 |2 r/ D

8 \5 _8 K3 f9 M8 O' E
                               
登录/注册后可看大图

) e# W6 s$ u/ j/ W

例:线条样式不同:

9b568f4cade8c1d20e7d15589d727254.png

  • 3 ~' F; F4 z, n" u0 V+ u0 ?

  •   l3 G0 H. y+ g& L2 L
  • ; _9 Y0 a& l1 H1 B* C

  • ' h# H; P* D2 M/ o# H
  • : B  B8 O9 n0 y: w: i0 U! t1 h
  • " i2 }+ m2 u6 ]! u( |
  • 4 ?& _5 R# ?$ T

  • % C8 [  }6 k, E% e0 V3 ^

  • . \- F: i; d+ W( d: d* r
  • 2 |& H! J* {% X

  • " ~# q( \' H1 \0 D  S% P
  • 7 S, c5 ?* i& B
  • & @/ W! S! z* p9 A4 V* R3 ]

  • ' v5 b2 t; f- [: t( z. g

  • " o& i6 T1 y! v0 X

  • # z7 w+ t' v; H+ R( m4 O0 L) g/ V- A# ?. M

  • 4 [" {2 i1 Z% L! c+ U( A' X3 F
  • ; {( m0 o( V$ @% _! R
  • " a0 h2 |6 i+ e

  • * Z2 F2 u5 f( y" T
  • ' R! \' _! B! p( b! X
  • % E( b/ o8 w) ?6 J2 }% O+ @
    , J4 ~% g2 h, g5 |% Z$ n. |! v

######引入库包############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()* n7 d7 x5 L% q; K4 B" f5 `

6 [% f  C1 P: a, K$ ^


/ W- Q$ A5 c/ k' H                               
登录/注册后可看大图

* C1 ?, [3 _% q

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

9d9110a408fbe81329b7cfec01cfda76.png

  • . X2 B2 m# |- C( D# t; @) s
  • 8 C! |7 z3 n$ x  h
  • 8 K2 A, V3 h+ I7 |8 v

  • * s7 I* @; C. L6 o

  • " Z1 `, \- O( p% V8 }/ D$ q

  • - a2 E" t7 Z2 U4 ]. s
  • ( [4 o+ c7 s7 i% H/ g$ n" h

  • . t; v1 n4 J+ ]: d, u# q) M& j! H
  • 9 K6 e5 Y" y  Y; @: W3 ?

  • * P& P4 s9 x+ S9 d# ~3 O
  • . }: S  t/ t  l+ e( m5 q

  • 3 \- B( {. R6 T$ K- i( o2 |
  • $ [$ C. A/ [/ ?5 m6 o
  • 4 h$ f) H9 d  X3 ]) D
  • ' Y; s* {( E" y9 o
  • " A9 A$ S- o; A' v( ~
  • ) j$ ~* h6 M1 m1 d! T5 y' m# z
  • ( m/ ?) J2 p/ ?
  • - S8 X* g5 T# M3 y3 }/ p0 p$ j
  • ! E8 z# t) E1 _8 M
  • ' ?5 p2 _* Y4 b
    7 N+ r( y" e7 ?8 d% n

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