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


    ( I( }0 B$ g; T  d* u+ ?

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


: K% v- W& Q  n+ Y7 Q5 w, K8 q; V/ s. u/ p- o

绘制简单气象数据图

  • 4 ~4 K" s8 @1 x- N; C

  • . r9 c6 G& f! t6 a2 f" S9 i
  • " L8 \8 E1 q# h, \# t
  • ( c2 ]6 i9 A! ^; q* C: E9 {+ {- v

  • ( c% m( F  @% g

  • ' I/ z9 j5 H# f; X" [! _
  • 8 h- Z4 [7 U; p2 ?3 @/ a8 n9 w

  • 8 c( h4 y) R9 ?0 O
  • ( _3 j; f8 {/ D5 ]
  • 8 M" P4 v, C) T
  • ; ]. l9 L3 e' r- T; E! n
  • 5 M' Z0 H: }' H+ r* |5 L3 I

  • 9 C7 T/ H8 o+ e; S

  • , l. ]1 `& y- W  e2 l. s9 z. u0 ]/ R
      X$ G" t  \7 {1 s$ ]; E& _

######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("画布")
+ i1 l$ \) ?% ?# v6 r

3222ca850649b6f730a155691403ec39.png

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

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

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


" H% ]% S! D. A& U2 \1 L8 {4 A, s                               
登录/注册后可看大图

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

a9db2c0d586d2c65693594bef673005e.png

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

  • * r/ A2 E. g% L" n. Q9 b

  • ; b: r2 C1 }  Z
  • ( j  q/ q" \' E( q  c) {

  • ) J" ?: t) C4 Y: p! [

  • 7 z& K2 D# {: X4 p8 p9 Q$ v

  • 6 a1 ^/ ]7 k1 r) e  f
  • 3 M  H$ N& n. [- X5 z

  • : \# b2 Y3 Z$ X2 P6 `0 ]

  • ! s; \& w& A8 ]  I  z( t

  • " ~( V3 Q& B# u, K% t2 M! A; @

  • ! T4 e. \6 K$ Z$ x
  • 8 l0 _* o3 {; R. L
  • 6 i& g% B& t, M1 }5 |$ z* \" C

  • ' O$ a7 Z# V' t% h+ H
  • 1 x6 X/ F1 n. i: J) v* ?
  • # F8 @# |" t* V" @5 h
  • 0 K9 i! T: a/ y; l, Y

  • ) N( n) _$ }8 A4 f6 ^

  • 2 ~; i2 {1 V& ?6 r; ?% R8 c

  • 3 f6 h2 X) O! Z3 ?' Z
  • 2 n( l5 Z3 l. n% y* d0 J
  • 9 p& x0 N. f; ~: X' l
  • * G1 W1 i5 z3 Q( ~1 I9 q
    : |) E7 c# a% 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, 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()/ M9 G9 m+ d. D5 A6 w& Q) L

  F  `# }# U. W( E


9 d# ^2 j! w) i5 c- [/ F                               
登录/注册后可看大图

3 E( H' T6 G8 \( ]5 Z

例:线条样式不同:

9b568f4cade8c1d20e7d15589d727254.png

  • # _/ C# U) `. U' h9 s+ J/ r8 l

  • ; R. c! U: v& L  M9 S

  • " m5 L& g) k% _3 c/ J4 ?& D
  • * S8 p7 c2 S9 r9 Z6 ]

  • ( N/ H6 w- _& ^2 I1 ~/ ~& D
  • ) ]8 U$ w- X2 ?! {$ v& B' f' q+ q

  • , T$ x1 w& c7 p4 p; \+ s; n
  • 7 r1 T, j& X# m9 N9 l
  • , A$ ^7 K; ^1 @5 z) I, U, o* [

  • 8 H' Q" \  e( p& v: T4 V

  • 9 ^: O. f) m4 W1 _/ G% R! q

  • $ L' [6 p& r4 X+ k3 J
  • 5 e1 p2 p' Z% l$ e* E. x: s

  • * F' D' ^' x* R' j& ~$ Z

  •   s$ Z# E, U) Z" X0 e

  • . z+ D. ~8 ]* }3 W. X
  • ' }/ a1 G) `% \# ?/ B

  • ) Q0 x/ ~% c: e# S, j" g

  • 4 Y3 Q/ {3 E0 k8 W% q0 _+ K

  • 8 J2 l- R+ w; I

  • . P- P5 Z' d7 J; u

  • 9 L  `, F, m) S  @, J
    3 A; J& G5 X  l& b8 R

######引入库包############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(), t! W- M9 V# }4 J

/ b* e% ]) N  u3 S( ^: x! g, I


4 v$ M$ S% {& m7 j; ?1 j                               
登录/注册后可看大图


: k% @) y7 v1 D" B, Z9 c& E

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

9d9110a408fbe81329b7cfec01cfda76.png

  • ( h8 b& R, B2 B; p3 h4 i+ M. d

  • 3 k$ T2 k% ?6 r

  • 9 C$ I/ O9 Q" S( C& r; H: v; X

  • . e- U) J. O: t/ S3 l7 a7 J0 Q2 {

  • % h4 m  X; L# y5 J

  •   A& e; k+ j" z2 C0 c) b& E) Y2 \9 I

  • . u0 ]: \1 b% ~1 u. L3 Y
  • ; R' y  x* Q1 v: S4 U4 N

  • & F3 A4 k2 _, h; s
  • ; |/ r! J8 }6 X

  • * k- |4 }- Q4 s, ?0 s& S

  • 0 g, l$ O  X+ ^3 H

  • 4 [. G/ t5 ?1 c8 U; u  U  g
  • 7 Y, @0 e) \  M  D4 G9 r* }( C

  • 5 _$ }: R  e: `& s2 d( b! \

  • ; N( \$ A6 I+ {, c  v8 A6 V# m9 ^( e0 _; [

  • - b& X: b: X* Z* O. b+ a# V

  • 3 s0 R# r4 J- P! U& U8 ?( R- t
  • 6 l) [3 a' s+ K

  • 8 j: T; D* q" t( ?1 f9 a2 ~
  • $ K# z4 e  q/ p

    + C, K! ?2 f/ X1 J' 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 = 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
快速回复 返回顶部 返回列表