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


    & v/ ?% {  v3 ?) Z

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

6 C% F$ v8 J4 {. X/ |0 ]+ [6 N

: l0 B9 F4 K# k

绘制简单气象数据图

  • ( W" B* ^% B7 y% f, q
  • 2 L- G  Z* T1 s2 o" R( @1 G
  • 1 n. `$ z4 w% W, k6 Q

  • % W: j4 Z3 E7 O- W3 q: r

  • % O* M/ h+ u- o3 a" J# t! w
  •   s5 V+ x2 r  Y6 d* e3 y
  • ( i& o+ S, W8 q& Z
  • , k; _/ P7 [+ k: [0 I4 H8 s+ E
  • / _9 d- R$ g" D

  • 0 X$ B/ e7 A/ S  d. O2 m( [

  •   I# L2 u. F: {. N* K; |* B- @8 N
  • ! q  }& j$ d: B  c7 t7 I) g# ]" C

  • + |$ V3 [) r6 I- t
  • 6 p% F* _4 B8 \  o! J( g

    " S7 D, U0 t6 ~

######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("画布")3 ~% |/ n1 H% K- H7 P; z$ V  h

3222ca850649b6f730a155691403ec39.png

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

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

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

. f7 C( w9 d9 J. Y- D& u2 a5 T
                               
登录/注册后可看大图

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

a9db2c0d586d2c65693594bef673005e.png

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


  • ; y8 c5 w. T: V1 b2 P
  • % Q" m& U' f- j7 i3 _
  • ' m" G& Y. ]& f( o
  • . y+ S: P0 P# u. U

  • 2 [" u! b! N0 r8 A5 d, m1 v

  • 0 M  J: I7 @4 \& `

  • : [& U3 P0 w" ~. F: x0 O0 S

  • / h% U8 e! i) ^% K: c' R. o# g# [9 e
  •   N% X( N$ v- J$ [# e$ R& G

  • % |6 x$ u* p% ^5 |3 y0 w
  • 7 B5 i- b$ v3 F  V- R
  • ! G3 @% y7 m% t0 |5 D) x9 U

  • - `  Z% a2 c8 [# y1 P
  • / f) j0 w  f) B+ `1 J- A

  • 3 Z" |: y+ @7 l8 C/ i

  • & x) N4 ]0 }# N  b) }

  • . u, f4 V/ A' s7 s  d
  • . L, i' e" [2 u- [: r) Y# L$ j

  • & d2 V4 N9 {. ]4 V" a- {. M# r
  • 8 f2 D( ?+ P- l6 F6 y& F

  • / J1 S& j& x2 }  g7 p* d, l
  • % }0 I5 x% C2 Y6 e6 t" l6 V8 f; O

  • $ E0 V* l! Q3 T3 S3 ]* O, Q* B. ?0 {- |! ~$ I; Q

######引入库包############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()& v" x) m1 \( g* ~' d7 m+ ?; D


) K/ _1 |7 Q0 v2 E


9 k- g' ?: J5 @+ l                               
登录/注册后可看大图

' u' O4 a/ M0 W: Q  q

例:线条样式不同:

9b568f4cade8c1d20e7d15589d727254.png


  • * D% \. T4 o+ ^; |
  •   }3 e+ s; b, y1 s& n& q% @

  •   K+ X! X0 j% \9 d

  • 0 y; x  o# u$ p$ Z7 Q3 K, Y/ q

  • 5 G/ N# i/ c+ n/ M1 R* \$ M5 \
  • ! j- Y. c4 c* r; |4 z, G: W
  • * A6 }/ Z% _' Q6 t2 V/ G

  • 9 Z1 {/ `5 {9 G3 ]% o
  • 6 X# L4 U3 x2 V% \  X& D
  • - U" A+ O: {$ N
  • - a2 a- U1 ]$ S6 b. o/ X

  • 8 u- S% J" F9 ^) q

  • 1 @; V5 E# F6 r# _7 J; o; @& I

  • 4 ^7 }. c; b2 s$ e' L

  • ! u% q) x  |: |6 Z* Q$ o
  • 7 _+ h3 M- Y) L4 ]6 P
  • 8 c5 p. ]1 B4 w( t

  • 2 z  @) u0 I7 z9 y. G
  • 7 |$ E( y9 q" Y, L

  • , {7 Q, Q! ^- G

  • - d$ K+ O) X, x" g0 @
  • 9 C3 \2 V: j7 B7 v1 k! v+ X
    ; P* S4 M. Z& o8 B0 K

######引入库包############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()
3 W% H' u' e3 A9 b+ U: r! ~

. _4 S7 d$ j, k+ S+ P7 P# M$ l! _

1 J4 c- l0 H0 B2 @/ R
                               
登录/注册后可看大图


  w0 \( E& t: H4 Q) a% y

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

9d9110a408fbe81329b7cfec01cfda76.png


  • 6 T2 G8 [6 H1 b  {# h  S1 v2 @; a" _
  • ( H2 q2 p& M( x

  • * D3 q' f* Q9 C) ~/ i
  • * x6 d% S% G) K8 K  ?6 q

  • , ]; w3 t, ?+ W8 X3 O# Y7 y
  • / I5 E& H& Q# r* ^/ B& L9 ~8 [
  • 6 N& J' o$ m, J/ _
  • , P3 x3 U9 y4 v' D

  • 7 I. ?: d" }  e. Q2 ^
  • ( h5 G" h( P$ g9 S$ p3 `

  • 1 E* M# D% h% d1 q9 y
  • / s5 e1 @1 p4 z6 t* C

  • " ?' J" j) Z$ l9 J2 m
  • 3 {, k4 [) B1 {$ S# T
  • 7 m) g1 L. Y7 R) a3 y+ k
  • 2 E* V, g* p: i! K' J
  • . {" h5 G( V" @# n2 O9 v$ y
  • ) q9 X3 L' |( @$ U9 }) G" W

  • . I4 @! J: ^: T  S/ J; s
  • ! u4 m8 ~$ S. z+ H$ w) \- h, E3 Z
  • & R1 L1 q7 w$ q% R
    $ ]& [: V5 N) S- x5 i7 C6 G+ p

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