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

      j% M. D6 E3 Z

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


0 f# `  f0 _2 p  h
9 ?* B4 U4 m4 i: f  g2 n

绘制简单气象数据图

  • 8 x& l5 v( O" }  v
  • 8 ~, {% H; _  x2 J% ~* L4 u
  • ( j, X* E- P" W' ?1 C; D

  • ) I3 c, a4 ?# W. {' K) D0 v6 X

  • $ |- F* Y- ]" G7 j, K9 r& U  ]
  • ) Y0 e3 Q: T  I* R

  • * C3 l5 M! T! R4 i+ ^5 d) K( V

  • 2 W1 O* {0 b' h% _; U/ M
  • 4 r+ ~" ]0 n0 Z$ b
  • 5 P. F1 X: h/ j7 y2 L

  • , `. {4 \* |- Y( b% A, u- L* Q

  • ; m7 d# b1 w) ?$ r" {
  •   [9 D5 @; F9 Q
  • & J7 s! d4 H: \- b
    0 P9 D8 K& v: @) O+ n! u

######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' q/ X% A

3222ca850649b6f730a155691403ec39.png

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

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

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


8 W" P9 u) V& Q3 C6 s* G                               
登录/注册后可看大图

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

a9db2c0d586d2c65693594bef673005e.png

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

  • 8 x7 x& F  T- r6 m4 g
  • ) b. `' x% J) t+ A& f# r7 y

  • * R% A8 y3 j0 v$ d( E# g
  • + D' y0 s# N8 U0 g' @7 T
  • ) s" n7 B2 P8 [2 g

  • / b4 P7 {  `8 U+ r+ [% [- g- f& i
  • ; G+ z, A0 D- }4 ~# `2 M

  • : L: q9 s1 W& `" r

  • : @6 c0 L* V  w- v: f5 n! U

  • - s( [5 s; T# \4 c$ L$ T2 v
  •   y1 @. L! }% N# m$ b! |
  • 3 j" A( c  U$ `0 W* @: ~

  • ! o9 D' m& ^1 H4 V$ o4 C

  • * U8 |$ z" G" p4 T1 ^# N

  • % N" ?6 h# M6 l) n; O
  • 4 \7 F, K' W* n! S4 A( i9 Z7 G

  • % N! G/ y2 J) }1 E' a# O

  • * x7 {0 v) l$ I
  • 7 T: _0 I7 H8 F$ W$ G+ s
  • ( i$ G( H8 {+ q4 {
  • 4 b* `& G2 ?5 Z
  • 8 E8 [3 F! f) ^/ I- P. Z

  • / K+ ^" A9 @* k) _
    7 m, o. b. K$ s9 @. D# K3 Z- {

######引入库包############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()
4 v3 s8 E$ ^7 k, h. q- n  h

+ o7 \! i: K+ Q8 c" K

$ X5 t2 e& `2 x% {
                               
登录/注册后可看大图

) K8 Z+ V; u5 P4 Z  m; G- M

例:线条样式不同:

9b568f4cade8c1d20e7d15589d727254.png


  • 1 q. H; N: d. k, X/ \" C

  • 9 t/ Z7 m3 ~4 f) y$ V
  • 7 O. T: D9 I6 b5 r
  • . v7 [6 Y5 P2 t0 A% C* N

  • : Y) M$ ]9 j' u/ U+ m% J5 a+ t( K* U
  • 9 a1 m' N0 o; ^7 L' d
  • ( C- q. F# v3 J! E/ a

  • ' L# e7 H+ h: |- |
  • 5 V7 j4 M# V/ x9 I

  • 6 ]; D- W3 W! }

  • # C$ D3 |4 f1 C7 {* n. a
  • $ e8 y: N) k5 Q% J; V% f" s/ p

  • * l' d/ J0 u: D6 E& t/ v. ]
  • 2 u; e- f$ }! `* k* z

  • ' b0 ]9 Q8 B5 S% }. c4 R* U) S; O
  • ; y8 @( N6 T) W3 H' P
  • , |9 S8 ~) J9 Y+ [3 `- W
  • 5 ^# P7 n  C2 |

  • 0 `+ m' J- A! [! n

  • 2 {6 M; K$ e% X" Q1 N8 }; v

  • 8 [) r& ]3 t: y9 e& a5 o
  • 9 }( G, l; B, ?% I8 M! g
    . D' _0 w4 s4 A2 q( w( q3 \

######引入库包############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()
0 o5 e* s. P" P4 e, P0 k5 ~


% i, f; u! h; o7 c  E


6 K6 A" p  f; E, @$ n" M                               
登录/注册后可看大图

+ Z: a: B6 x$ C& ]( ~. _' p$ x/ u

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

9d9110a408fbe81329b7cfec01cfda76.png


  • # @! e; t: q5 M& v' b$ _5 ?7 U
  • ' V: x; d! Q& L1 S. b! h" l- m/ S

  • 0 E# S) T; W2 I
  • ( t6 C( n  y6 Q1 |/ Q1 ^/ y9 K: }
  • / l: h5 c# R$ i& u; g

  • ( r3 ~& v$ l$ k. \, |) U
  • 4 Z" N- P/ ]: J) p7 k4 q

  • . B6 w- W% [! [3 f2 p& A9 Q

  • # k0 i  R  b3 y- |+ Q! t

  • + I) @8 Q3 @! w3 u0 _0 i
  • 0 H8 o1 U* T. [! I4 ?( _0 u
  • % `1 }/ F4 z7 z! `: \# M- b

  • . Z* e2 N. Q# B
  • " B: m0 f; j1 q0 v8 j/ |* M/ B7 F. p
  • * l' \: A, O1 ]- P# f& d
  • $ u! l+ o; a9 R2 _' f& K6 g

  • * m) z7 [3 X# H, N0 T) F2 K1 b* E2 {

  • ' w5 j' _- O' H! s
  • 3 A" ~' n7 g; L. l$ [! ~

  • 0 ~7 A) c7 g) v% @

  • 4 ~# b2 y6 `/ Q* x4 G1 ~! ~9 A, k, f# k1 B1 G5 D

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