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


    : e1 F7 H- B0 Q' q0 f- c

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


1 N/ R& t; Z6 G( p' U
. ?& ~" c3 X7 Z9 I% C

绘制简单气象数据图

  • # t: I; _$ X' q6 v
  • ) a; F1 n0 j2 C8 ^
  • 9 @& L# G' u9 g7 ?  t
  • " n, }. }6 ?% d/ p+ X0 A
  • " _* \( S- q3 B$ A+ L& V
  • ! d% G2 L) q2 T  {

  • 8 o+ @" D5 o3 c# h" j. ^
  • 8 H' @. K/ M( B! e/ P+ X

  • + v% f" Q" H1 B! l
  • & a/ h4 }( D4 v) j/ r: B6 t

  • $ V, T, s6 N( Z/ n7 O9 B8 A

  • & _. T+ K, r) t4 t
  • - m' X$ A' p6 R6 K# R9 d

  • 6 ?7 J- Y3 P5 H/ }) `
    3 I  H1 Y) U5 ]2 k1 R

######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("画布")& F. H/ T6 ?+ B: {0 g! Y3 q

3222ca850649b6f730a155691403ec39.png

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

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

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


3 |0 P! P; j- `7 y7 Y) Y                               
登录/注册后可看大图

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

a9db2c0d586d2c65693594bef673005e.png

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

  • : k8 l7 n/ _  d' k$ Q6 W6 g. N+ d

  • 4 y" w. w* ]4 {& O( c" N
  • % @! q9 U. E* M% ?

  • $ B. z$ N' s6 G+ K9 B

  • 1 g4 D& a& u0 w. z" M! E

  • 2 c# ^  x: K: V  k; s  M

  • 3 d* m0 ~) W# h* Z  \2 x9 R
  • 6 T+ [0 f7 ^: y* c* y* r' Q6 ]

  • - _% n2 ^* g$ t

  • - b: w! n5 C6 N+ j: F
  • 1 p8 b$ D% e+ y% \

  • % L; X# }  J, }% I3 g
  • ( ~/ j4 W; ~4 |/ m* x4 m
  • & _. |9 W% u: P+ [' Q8 N
  • 5 D- \6 `4 k( k" a! Z0 I
  • ! S0 W" x' X+ |8 N2 O

  • 4 r* ]# L3 w  d/ {4 A  F

  • , _9 ]5 S% B" o+ g  n  D" A8 g5 f

  • 4 {7 l8 m1 h6 }0 J/ ]: [1 {5 G
  • 2 ~/ a2 n$ ^- j# Q, _) \
  • & z) n! l$ _8 u7 `
  • ; s% R6 L: D3 Q. Q; i; _' @8 ]0 l
  • # D. }* r2 W! Q! ^& ~
    ; I) [/ A1 Q1 H# @: j

######引入库包############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()
5 B, Y% Z$ u; |4 {/ e


2 g- K4 U% P! i# d& H9 A


  |& t' i' p& ?3 \/ j( l6 Q# |8 k2 Y                               
登录/注册后可看大图

$ t4 X( w  s; e- v! G* O2 i( B

例:线条样式不同:

9b568f4cade8c1d20e7d15589d727254.png

  • : @" ]! J# K8 w. J; D  W& ^

  • 3 T, c5 C- E, P& {' D' l2 Q& u7 ]

  • ' @* Y: o1 R* x1 f; P5 x! @
  • 9 X* Q/ t  d' x+ L; e) I# }

  • % p6 I$ p1 K; c7 o7 e3 Y3 L

  • # ~* {$ H- I! u0 `
  • 4 j" U1 G$ Q( Q; [- C9 r7 b4 Q; v
  • " d- z# R9 U, _" [8 U) v* S# ]1 U

  • 5 O4 i# G) a* c
  • / I5 u9 ^& e+ n- B

  • : l2 }3 M% \5 S# {

  • ! ]# M1 a* B, I. [/ e4 @
  • ' S0 @2 @6 o# z+ E; p
  • 1 @( \1 p/ Z$ u! i4 l& E9 j

  • 3 g2 B& j3 M* S% v4 m+ u1 K5 m8 {
  • 9 y" H, z# i/ ]

  • ( P" p5 X! Y2 G; g8 o* r
  • - U% N# D% ?* z9 _

  • 4 ~6 [+ i. ]+ e5 y* }& S

  • . |5 J3 v; |8 {6 @

  • " w" d/ B8 m( a) L, U" @/ r

  • , F8 U+ y" Y5 M% t( B5 i0 {
    ) n+ K5 \) `! G" G3 C3 Y  h

######引入库包############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()4 q3 M0 _, w6 \1 |8 b$ D  b4 v9 M


9 t' g& k& A  @9 u# A/ c


0 ^. p2 d+ X5 C% `2 D                               
登录/注册后可看大图

6 O, O* s1 R; [$ S) M

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

9d9110a408fbe81329b7cfec01cfda76.png

  • / G9 Y2 ?( S* e5 k0 @  l

  • % t' u+ V5 ]! E7 y/ m2 S
  • 3 {2 M- _& k7 y1 A  Y# D9 g" Z8 y. d
  • % ^( N0 S1 Q- B) X4 Z3 M; K- {& T

  • ; E2 \# \( o: h4 x3 F7 c

  • ! r4 g5 @+ B7 A

  • - V# @/ [0 j4 m- {
  • 8 Y: `; G3 s0 p" t/ b" i# t& j
  • ' V: ^/ v+ M2 L- k& ?) v" _

  • 9 v* f- n1 `: e7 ]; s1 V) t' ]

  • & k# l. ]9 @9 o- V% }% Y

  • 2 H. K- }, g' v7 b
  • 9 g& Z! O6 n% f5 `9 K7 y

  • " m1 k3 ]4 E* j: |4 N1 g# l
  • 9 C8 |" y4 ]# K1 v' P! A

  • ' h: _5 b" \( H) d
  • , Y1 v, A) E) L2 A

  • " c6 X$ F0 q% C7 n0 x, ^5 T1 B

  • # m" c! K$ M7 N( |) E9 ]
  • * w4 m" H. M3 f2 b

  • ! d7 F6 y' {8 z) l0 u  x$ F+ V$ Q9 K' k+ r

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