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

    / z# {. M0 d" a: k! O' W0 H

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


5 Y8 N- w% ?! b, {5 e# h9 Y( U. p  [4 N
. n, }0 k2 K5 }  v

绘制简单气象数据图

  • + ~4 F0 r6 W! M0 }4 E. r+ U
  • # O$ r+ w  {3 X' h$ j
  • $ F" A& A) U3 G& U9 j1 p

  • # W$ I1 q8 n1 G2 t  C: u, l

  •   t" G- r/ H$ A, D3 C# G* e

  • ) E( c- F; Z4 U5 s
  • ! \5 f( I2 p, f4 C5 ]# b

  • 9 g3 I5 X5 |1 `! k

  • . O1 \6 ~! K9 t4 K
  • : {6 T2 p6 t" N1 s' |+ {0 D# z

  • 0 G; d9 @. [* U! }! H/ g  [- g
  • 4 T9 ?3 e- [9 b  f# t$ j9 k, ^
  • 4 v$ C* h( b1 S6 x6 d) m2 ^2 @) @; N

  •   b3 M& ?# ?8 i5 c  ~, G0 ?1 R4 d" M, F: W, O7 z

######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("画布")4 ?. l$ h" G% s, B4 Q

3222ca850649b6f730a155691403ec39.png

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

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

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


; _: I, V+ @/ w- H                               
登录/注册后可看大图

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

a9db2c0d586d2c65693594bef673005e.png

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

  • ! S+ t5 c9 Y3 @1 Z9 c5 p1 Y5 I0 i& C

  • + A& G5 C! I" g5 E- r

  • & r& J- {( w2 o
  • . o0 N+ J% w6 V5 f$ O& L

  • : {3 h0 r6 h0 r& P( E
  • 6 ?9 e) A0 B0 C3 M2 M7 M$ M# `
  • : U: H4 Y% Q- C* e2 e

  • ) Q1 c  ]1 X0 A  ~/ ?
  • $ c" S! S% i& o* e$ p# r4 i
  • 7 Q, Q/ N9 ~7 t; j9 R/ D0 G4 V$ Q+ ?
  • 6 e* b( M5 U' Q3 D/ Y, \/ {+ h

  • * C% X9 c& c2 t3 L# j+ v

  • 9 j3 \( `( K$ F& `

  • 9 Q" x- f) E  F5 }4 a* H

  • 0 t* M7 @! [6 B1 P6 Y' w) g

  • * q! A% {( U9 V& q) ~/ g

  • 8 a2 G* @: z$ N+ w4 B3 u$ I# y
  • 3 j, }; L# Q, N( s

  • . v1 t6 \! \# P% n7 t
  • : |+ B' C6 b+ a0 E% h
  • 7 A8 A! T& U* T3 N& ]

  • / X  P1 W6 `5 u7 A* I" y

  • 6 t5 W- k$ p* N4 t) n
    - \6 D  V1 Z8 f' z$ j' i& F. d: f

######引入库包############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()
0 o: ?# H* W0 o% }: Z# A( v8 V

1 H9 l# a& p: X; G; @( M

$ b/ r5 L" s( M# h* P
                               
登录/注册后可看大图

. P8 Y! ~, Q- o9 u  n* u

例:线条样式不同:

9b568f4cade8c1d20e7d15589d727254.png

  • * J1 D; z7 B7 J/ E" f/ Q" u- t

  • # B$ g+ I' c  O8 Y

  • ' t5 {* ^9 B( V" j# I# S
  • 0 s8 v+ @6 R& Y9 f8 A, p4 ^" Q

  • ) p* ~  D3 w! I
  • & z- ^7 F( F; {+ f' \; d6 n! o# D) M
  • 6 Z  v3 w; q: V4 N+ {

  • ' M% ^) r6 b5 g8 I+ D
  • 2 J) ?/ J; d" a1 \5 [) b0 i4 W2 R

  • ; b4 P, i, E8 J+ x! `
  •   a( z( M% o9 L) g6 y4 m

  • 5 S2 j1 s3 G) k0 B0 v4 k4 {% ^
  • 2 I/ V4 B/ j$ B! H+ M
  • 1 @9 K' t6 }2 _  R* S

  • * @, N8 R; u9 f3 S' z

  • 8 h; H, `" ?$ \# J1 r( m
  • ) {' P6 }( Q. ~, b& O1 l& N

  • / g9 s# S6 M! ?3 J3 s
  • ' }8 r  k  H1 d3 U: d4 o
  • & }' @( W, X& `& T

  • 0 @/ {! d2 w% ~( O% l! n4 K3 A  u- x( U" N

  • - Z, m" ]  Z) c: @8 k' b# E+ t! a- ~4 H( V+ m& n- e

######引入库包############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: E& D- t6 f* h5 @

: m) g- B3 G( D6 V" B/ l7 @


6 o9 e8 y- N  `                               
登录/注册后可看大图

% o( d) O: u! P- I  a3 [/ {- F

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

9d9110a408fbe81329b7cfec01cfda76.png

  • 4 g* @" k$ L) {0 O

  • 2 O1 ~; `0 B1 ~/ a% L% d$ S' m

  • ; B' i% g  `( z# u, m+ Y
  • 9 y! S  Y- T3 A

  • " K  }6 U4 J9 V" e- e

  • / d% O. a/ w4 |8 [& o4 m0 r

  • 7 n: |: c' K, S; }; K

  • ! N7 k/ @) q3 t- w9 v

  • ( S! W$ P- c4 Y  r" F# N) L8 k) Y( j
  • + \( s# n6 L9 A6 r9 C
  • 7 U8 S7 H7 j9 V. z4 S# s/ Z( E6 E8 j& a
  • & V, L+ v" l$ k6 _' r1 J

  • , D' ^6 S* D% Z
  • ) o4 \" i  m# B& V/ s; P
  • & @+ T) Q# z6 {2 d3 n! ?

  • 7 o- d3 D7 B6 m! k

  • : M7 m, C: h" p2 E% w2 K+ k
  • . G# I8 q4 g% b' T9 h( r; Y! @
  • ) k. x6 {5 I' g! |, V' u
  • ( {* b- |/ J% ?* l2 w2 h/ L
  • , ^3 E9 W7 s* G. f6 y$ x
    % S9 b5 X* n* u. D) f. j5 C

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