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


    5 v# a' Q. q4 q: A

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

/ g3 z( d) L4 j( J* h' y' O

  Z% v  o2 C* i9 v

绘制简单气象数据图


  • ( c* B. G" T0 g9 _" {1 Q0 G
  • & K7 X1 a! s2 p$ ~0 G' ?- ]4 i; J

  • ) g9 t, q1 ~: b/ c7 \

  • 4 }# \9 ~8 }7 o: O
  • # ?3 w' [, @! A% e
  • 8 v' M' c/ T( c! R* D3 M+ @

  • 6 y6 K, I3 F: ]/ W* x
  • 7 [, [+ F0 v2 B2 ?6 W7 m
  • / o% U" ~0 ^, \" J

  • # T: D; S( d8 ]$ u- T  g6 b
  • % X  G4 D/ M4 D* ^; I! p! q7 B! B) E' O
  • * k8 @# N4 s* U8 z6 e
  • * p3 H* ]5 i2 p9 w3 X. r0 R* j

  • 1 T$ Z2 W+ r$ E; l" ^; K/ H
    - w+ S! V  \1 I6 D6 Q

######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("画布")
  y# _3 x2 F' E  x8 v6 A

3222ca850649b6f730a155691403ec39.png

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

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

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

5 P1 i+ W% |' C
                               
登录/注册后可看大图

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

a9db2c0d586d2c65693594bef673005e.png

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

  • : ^0 f, q  @& r; e
  • 5 ^: K6 H+ T+ ~9 H( s
  • 5 E+ u7 S1 A/ U+ ]
  • 9 R* P+ N8 J" I$ b1 t6 w

  • 5 |8 D" u9 X1 G9 j1 \# ^% `% i
  • / [% p# I# W0 t! d) c3 D1 {5 ^
  • ' H( [' a( @' o) q

  • / I+ o& p% P( H( C1 O3 S6 W1 M

  • ) F9 L/ G2 h1 H) f% S/ f# _
  • - B% |# E3 x. m. Q. w6 x

  • 8 i* |2 c' L8 |, @: J1 ]3 l: @

  • . k7 {7 ^8 X( g/ F1 o

  •   H+ S# Z- T9 p! n3 J3 H
  • 0 E6 q7 x* ^" _' }6 [# C) |

  • ( v! Z8 S( w# r3 N/ j

  • # p  ]8 w) ~% w; X
  • * S9 [3 D' i  R
  • & `( A  h( n6 g3 t& A( g: G* Z
  • 1 h6 H! }6 o3 s
  • # j& n: c; r# |3 L9 ?

  • 1 t9 G0 O) K$ G/ P
  • 8 d" ~  L& O* _: T4 z% n

  • ; X; N& d1 x7 }! ]
    + P2 Y- g+ a' |" 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, 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()9 Z  Q* O7 H& S! X


' R' ?& P/ t( |+ I, H3 ]9 l* j


1 i, a9 e/ K3 T  F% E& h4 h                               
登录/注册后可看大图


& m$ G; P* ~. N$ }' o; u+ |$ w

例:线条样式不同:

9b568f4cade8c1d20e7d15589d727254.png


  •   y& X1 ]8 X, U& R7 ^+ K
  • 1 ]. y' J9 {( A$ C& f, J4 L
  • $ j: J$ ]0 m9 z6 L8 c. s; K

  • 0 C- n: F$ h! V

  • + b) D, u2 X* C) J$ a+ w
  • 9 ]: t! j+ _% `- [
  •   D2 Z2 V7 o" w
  • ' F! B2 n3 `+ r: {) ?$ z2 L4 a
  • * i+ l$ o. z' f  R  F% c

  • 7 d2 a( h* L- D. c" n/ }3 ^0 q2 h
  • $ n1 V7 u# D& E1 h5 Y! |1 k# f
  •   |/ z9 i4 J. Z( g

  • 7 m, Q4 Z# Y  G* r8 G/ ]9 c

  •   n4 q/ a# o" i! ^# g
  • 3 P; y5 H( b8 S4 Q9 q- Q. [6 u% P

  • ' L9 f  h/ Q2 r! k1 k
  • ) t$ d/ b- V! z+ [/ K
  • 7 h3 L) m/ Z/ K# E1 v9 H- V8 `

  • 6 A( n6 J' r6 q9 i

  • 5 u( G& L! P9 }7 {  b$ c
  • " W/ }8 f4 C* j* y4 Y2 ~7 j4 |
  • - q4 p* R, I/ i7 m6 `) v

    ; T2 a( S& P* n/ a4 o

######引入库包############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(). A# G& X4 w& H, v6 @7 W


+ Y. {; v0 P  r6 W6 ]( i


3 q! g) g7 P9 g; i                               
登录/注册后可看大图

  [7 W( U  P1 }7 z

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

9d9110a408fbe81329b7cfec01cfda76.png

  • : h4 Z$ T! ~8 i9 F

  • & o+ Q! H( ~( C* e- G

  • 1 i6 |5 T; l* z$ R

  • 1 D, T& w9 ?& }2 M, q4 X& d! C( F. z
  • 6 ?9 |' A5 b# q# Q3 m2 N. e+ b
  • , x7 P% C. `' w6 Z$ C

  • , {- A  U" h- Z. [

  • 4 o; Z) Q; j  E/ J* C0 y8 q
  • & E& L5 ^% O) r1 c2 ~
  • ; D  h! v, @1 Q5 B! P
  • ( d! V/ ^2 j" d1 i' W% c
  • + o5 q8 L) a0 ~( B8 y" ~( R
  • 8 U  f3 B( y& ^7 v& M) [8 d0 Y
  • 4 r9 c; U. o1 ~+ Q9 J" u

  • 1 V; E8 M/ W$ U* M& R

  • % w# l; D: O! D; j. f5 q) {8 u
  • 2 ^3 D( J1 _5 x/ F

  • 3 {9 }/ `* p8 c' t  [$ f: @1 ]

  • 2 z% J3 n' e- [8 }
  • % B" s9 h% {/ _& X
  • ) ^5 S, O+ W8 v2 D- ]
    - V9 U2 d8 ~) i. L$ S* C% d& k

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