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

    % E4 s4 {% g) u  |9 g* \

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

8 j' Q" {. E& m- T$ K6 U

# l/ N3 v) J% E

绘制简单气象数据图


  • . W, p* }2 a; V

  • , p: ~8 F" ]. s" j! m

  • ' o* F! C9 o; s2 j) k" A

  • * j7 K, w0 d. S1 {- T

  • + _* C: e2 R8 R  F8 u3 m4 C: V( I
  • & s! J6 p/ J+ G8 K& ]

  • : z  a6 |/ C/ ^% y
  • - M: ?) e$ U* ?* E9 B3 G7 \8 |; c1 {

  • ( F% V: O9 y/ V
  • 1 l% L, n( p6 d. u* G

  • 0 _- d, z( |: Z: ^$ U: N- }
  • # W! a. F6 m, }- z( L$ s1 x

  • 4 A; L. {) J' b, Q0 D1 `& s& E* O

  •   G, C. Z  I9 g% G+ c; p2 h' S3 H. T/ D" v& s* D: p

######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("画布")) ^& r8 I4 h/ D' \: k% p! D1 A2 k# J3 R

3222ca850649b6f730a155691403ec39.png

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

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

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

# i$ j. E+ `+ q
                               
登录/注册后可看大图

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

a9db2c0d586d2c65693594bef673005e.png

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


  • ) v* }% D/ n3 b$ c* n
  • . L" J/ Z" ~$ {; O
  • 4 w- V2 O5 @; g9 w
  • 1 ]1 \2 m5 X- |0 A4 _0 }
  • 6 B( I' [( _& ?" s
  • ' k% U; @$ a0 J- e+ {
  • ) `: M3 d7 y$ W& Q2 E1 S& t  C
  • : @1 v/ `. J& s( F9 i$ [0 F1 {6 M+ r
  • ' l% ]5 m7 _* {; I+ B' A
  • 8 i- W. M) Q9 d' O- C6 \1 V

  • 6 f. V- }3 e7 K8 K6 b$ T

  • 9 T  Q9 T3 s: Q* Y
  • / k9 h( y2 h3 G% X
  • 2 w; F# o( Y2 e# U: E6 e

  • - H) @& j8 R, }
  • + p" D# s$ n/ L' P

  • ( `- n% j; Q  g* l$ P: O: A
  • 2 u6 I" X- Q& w, A3 }
  • " S* z  w/ j: Y  a; T

  • ! L7 q) y8 i5 ?( Z4 _

  • $ ^. w9 D* |& D# r3 n$ v9 Z

  • 3 |, U4 J& Y5 P6 |' T0 A
  • : w5 |% y2 Y! J' I/ _6 L3 W
    + S; L4 F- |" r" D: R5 a1 \

######引入库包############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()! I" ~- ]6 u0 L9 ?/ G. {/ J

4 Z' k3 [% w5 A  X4 C% d$ N( v

, s* o# h, K$ p" m$ T
                               
登录/注册后可看大图

: g# [9 o/ G6 f+ _& K

例:线条样式不同:

9b568f4cade8c1d20e7d15589d727254.png


  • * W: [2 S4 n: ~
  • " j# Q8 [" Y8 r0 v9 |) b) P

  • % u) b$ M" d, ^5 @& j
  • $ M5 z- b, G; N# e& s

  • $ @+ `3 ?- m; _9 ?+ A3 k
  • ) O8 M! E/ r& B5 Z2 @0 Q, ]
  • ( x' u4 ?( c7 `) T# ^
  • % k- d# T/ S, A2 j- G: b
  • 5 A" H/ F* v! J
  • 4 b4 b: C! Z; W- @

  • " H6 ?- c: m- @4 X1 j+ [3 @

  • 2 ]! B: o/ z# {4 V- o

  • 5 k6 \/ Q, n" V: i2 p: E
  • ! X# n7 _" L/ |; p
  • 3 B. L& I. t' z  X

  • % b9 _, u( i3 ~! r; c( b2 @6 y

  •   S4 A# ^. b4 d4 T% [$ g7 w' q- e

  • & Z7 `- B# S. L7 C4 m7 v/ ~; ~$ N8 q

  • 7 c5 H: ~8 O1 ^" z  {: s* ]2 n
  • ( G1 h2 u1 B& y
  • " B3 T% [% \+ }3 l
  • - J6 W6 {+ i7 B2 {7 ]3 i
    / e8 f: t" s8 f3 y# B

######引入库包############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()
( |" i3 \* M8 o( F$ x4 \9 i

0 k" z+ ?7 s2 T( F

. T/ _8 M+ o0 z; I; L; K2 C
                               
登录/注册后可看大图

6 s  G0 y. J* m2 l

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

9d9110a408fbe81329b7cfec01cfda76.png

  • * j: {( t- a! j

  • - }! I6 |( M4 d1 ^

  • # K, T. G3 q* R9 y+ r
  • / \# M' F$ ]! [5 Q: P- l5 L$ G4 ~! x
  • 0 |2 h1 i% \/ G- |  J* z
  • ; @1 G- j. }3 b; Y+ t9 m4 M
  • / S& R# p; Z: ?! p- D
  • 2 |( m: z3 s' x; ^8 K$ b) e4 j

  • + M! K1 b5 I& K+ W

  • % ]' L1 d+ R4 h6 z8 r6 H) G
  • # f+ d, o5 A) R8 |6 z+ f
  • 7 w6 P6 ?1 K7 y) |  R. D

  • # O; [9 O8 p" [" v6 r. w

  • " W+ V5 P0 F7 I9 a, N# x

  • / A. R; g2 p0 v1 g9 y
  • ; _- F7 y! u/ U7 l/ `

  • 7 Y) J) L/ }' U& y5 ^2 U
  • % E6 ]. c$ t0 E; M6 k# z& v9 l# A* y
  • & O' t* |2 k) Q5 o1 h/ [

  • 3 Y; U8 O5 {# }# s# G, ^
  • 5 I) J4 c; v1 T" \+ o& d- T9 j
    9 I, f8 r. ^# D8 \

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