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


    3 s* A  k% \1 {5 l2 t$ ]  z

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


- }- M. O2 N" n2 l9 R6 L+ {) U' o# N2 d: o

绘制简单气象数据图

  • 0 A' `5 j. q- \6 X

  • . N$ _8 Z# G! F' t% P

  • " O& H$ L& {! P& O# {( E  a

  • + L7 B- U5 R3 `& ?' n1 J
  • 9 p& j/ b! Z* z* k  B
  • 5 k) K6 G0 R, D+ }3 w/ @

  • ' L* U% i* Z7 ^( `

  • 5 R- C. `$ _' q
  • ' w- E! F7 P2 x. p# w  f, t
  • . y2 K. `% b* _3 f, I

  • & _! ^4 {2 a5 f: m
  • $ ]8 |0 `, G: i$ d0 M8 T. E
  • 3 J* k$ m+ N% }+ ?3 a

  • " y' w. k+ F- T5 m* \( P, h3 A
      y  f5 t: T* w

######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("画布")
+ v) P  W' B2 [& P2 q

3222ca850649b6f730a155691403ec39.png

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

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

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


  s+ K# ^; q( p1 j                               
登录/注册后可看大图

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

a9db2c0d586d2c65693594bef673005e.png

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


  • . m$ H+ K1 J7 A7 j
  • & M3 N4 a( I, R; t  R+ e

  •   P& i, k- D& G' V/ U7 X$ a7 ?
  • 7 B6 h( s- X) E7 c
  • 0 Z& H8 L/ ]4 T$ ^, G; s( F- |! {
  • 6 e6 M* y+ f7 L; \1 b

  • 1 |( S/ M5 L5 [0 r* A

  • " V2 d( P/ \" ?7 k/ U% y
  • 5 r, ?( g! G% }! C& {% T  Y5 o
  • " w' |' }( Y  v2 X% e

  • ) W3 }% F9 [0 T/ j
  • + a2 m) U& b" r9 f' b

  • ; j2 |: N; _2 m. k" s

  • ' S4 A- j) Z; K+ J
  • 5 w9 W2 p8 I- b

  • , a" u( Z. y5 ]6 [, W6 q6 b
  • % t1 s8 F2 B6 u; o
  • 3 ~) a% m+ X$ R6 B. O
  • ) B! b0 Q( {8 j8 _
  • + x& q+ y$ r# @7 G. V0 H" G

  • / B% K" {0 r2 g8 Z8 W
  • 1 s0 G7 F& [. b9 ^' f

  • 6 O) F  n# M3 z" P; ^8 k  X0 S" ^$ R) N; `. t" X

######引入库包############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()7 G- A' L( K9 l! O& y

- F) n* w/ m, W- p. m5 f; S


0 F* h9 B5 x. ?* c3 W! g( j2 C                               
登录/注册后可看大图

6 l6 q" F& j, `# N4 n# `$ m+ S1 X9 r

例:线条样式不同:

9b568f4cade8c1d20e7d15589d727254.png

  • * s! L1 O5 w5 U! c

  • / o; |2 ^. [3 m) o& d4 ?7 _4 k

  • 7 D' u* }: Q2 x: i. w# S
  • % I6 d$ b6 u* q
  • . r+ d3 r2 p; H9 L* L- l
  • 5 b7 w+ _9 F. `1 G
  • / |( J% J  y8 v) ^# X* e
  • + v, e6 C, [4 B
  • ; v, H6 g0 S2 ]6 X4 ]
  • 2 W+ g/ M: Q1 k9 Q7 ~" O5 y
  • 5 h6 f1 O1 \; Y

  • + ?" Z/ L9 z; t$ Y
  • # Z# y" t$ q2 S. d5 X  \* W6 A

  • 1 V( h" w5 {: J+ o

  • ) i( Z$ L" C* J4 W
  • 2 }; d7 v4 K/ X' o! n  t
  • 7 y: \! O. {& D0 C' N# u

  • ) a) E" P  [* ?5 H0 d0 ~
  • 3 N* o1 a: ]0 {7 L8 n5 U* s
  • ' R8 a6 p- N2 X8 q, k
  • * J: N' G' ?9 [! b% I  @" ~4 x# h# X

  • : f7 L" V+ h; ^4 G9 P
    6 T3 R/ T+ ]! r) A( X4 @" n4 V

######引入库包############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()- h4 a% R: J0 x; @: [+ C) `


" J1 n# {7 W- m# |

$ q' M8 t! ?/ t1 g7 s% B  I! L
                               
登录/注册后可看大图


2 @0 J3 f/ _7 h$ r; A1 D" o; B. e' m

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

9d9110a408fbe81329b7cfec01cfda76.png


  • / e: Y( y6 x: Q+ E3 d. ]

  • * h# W" S( ~2 W# B$ i
  • 3 X7 ?7 l/ o( }: d( @) e
  • 0 @# g8 d& ^+ q1 `. \

  • 4 b/ V4 Z; i% s& y7 X+ `

  • & c9 X8 ^* H: }7 v% `" M5 e4 W
  • 7 ?5 I$ q( |7 f3 K

  • 2 v- V! c  t( B( D9 x

  • 0 d% M$ \0 N* w' U2 p- J. X3 g

  • . b2 w) r6 y* @. n" _$ {* W4 R
  • 4 n$ r( G) i, c0 B3 T" |$ M
  •   |% L$ z6 L1 Z7 a5 X
  • ' o$ W( [( D3 j* S; f

  • ) \+ h( R9 |5 V3 e2 r

  • 4 J3 G- q! v5 D  d- N+ z4 U

  • 1 ~5 |  |% [$ k, n- @, L" \

  • 1 @) l6 [, x: g6 l# w
  • " X9 j$ S, N4 C2 ?9 @6 W1 Y

  • $ z1 q. F: W. L& w6 H" @
  • ) Z. `. @$ u0 a$ I
  • 2 O! j- `9 U; e* _4 h& i8 h
    $ K2 O0 V7 C/ u  w

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