收藏本站 劰载中...网站公告 | 吾爱海洋论坛交流QQ群:835383472

[Python] 【气候软件】Python3:数据可视化绘图(折线图,散点图)

[复制链接]

掌握了数据读取的方法后,就需要将数据可视化,进行绘制相应的图形了。

1. 使用Matplotlib绘制简单的折线图:以一组1981-1990年的某地月平均气温数据为例(数据信息如下图所示)。

6c25f72746ee53e9535e73a42eb7c456.png


, ~$ Q: k8 ^9 o1 S- U% B1 m/ I5 b9 F. t' @9 }: K9 t! K* @9 P' ?. ^6 ^) a

& e$ D% s: e1 t& d

第一步:使用anaconda安装Matplotlib库:


  • . s/ e+ E  d- T/ {* }3 i' g( k1 g

conda install Matplotlib( A* z/ Y7 g9 T9 r


- Y6 }* j4 ]7 j. L9 \: V" I
+ M- G4 o7 ]: t* t) l2 i; z; R: y+ d8 n( T. c+ ]  {( `! [3 l8 L

第2步:绘制折线图

subplots()可以在一张图片中绘制一个或多个图表

fig表示整张图片,ax表示图片中的各个图表

plot()根据给定的数据以有意义的方式绘制图表

只输入一个列表时ax.plot(squares),假设第一个数据点对应x坐标为0

同时提供输入和输出ax.plot(input_values, squares)


  • 0 ?% C- ^7 a9 x! l6 w, k' I

  • . _7 |# m- S# F, |

  • - _/ X1 D; b* x& d& D+ M" c
  • ( I- v" _9 @7 Y+ N/ f* m

  • 1 Z6 J. e% r8 I( H5 {3 ^

  • ) `8 V5 m3 E/ Y4 s
  • . u; e6 S# y; l9 n: F
  • , z' o8 ^' @6 W% C8 N2 s
  • " h" z1 F$ `% u- u! F+ D. s6 s1 o

  • * {+ k5 l$ @1 J. l5 w4 C7 h
    6 l' ^2 L6 j: Y+ N) E( a

import matplotlib.pyplot as pltx_values = [1981, 1982, 1983, 1984, 1985]y_values = [22.8, 22.3, 22.9, 21.8, 22.2]fig, ax = plt.subplots() #绘制画布,地图ax.plot(x_values, y_values, linewidth=3)ax.set_title("1981-1985 temperature", fontsize=24) #标题ax.set_xlabel("time(year)", fontsize=14) #坐标轴标签ax.set_ylabel("temperature(℃)", fontsize=14)ax.tick_params(axis='both', labelsize=14) #刻度标记plt.show()
% k/ r1 ^8 v( g# A: k9 W

代码读取后显示:

4cb0033425d1e6233c1ff8177f04baf7.png


7 L( U& e- l- d

第3步:使用内置的不同图形样式绘制折线图

1、显示所有的不同样式的图形,共有20张

  • 5 g6 p7 \% q8 i% L7 C8 t2 ~
  • 7 j8 L5 E4 V. N, `% s3 ^

  • - `& W* U$ I7 _/ b" _1 o

  •   v8 n, N" ]6 E
  • 7 ]% y( T& c3 x0 D+ t
  • % Z; n' Z$ b; `" q8 c8 H
  • 9 j7 |) i( p& K. c7 w3 P
  • ' X: I+ Z, I3 N8 M% w) ]
  • ' r* r; r% U, h9 x3 n  ?9 N; F
  • : E5 Q) g- v4 \* h. ]  x# y0 @
  • $ G& X# [) r3 J  z0 H

  •   I: D" h3 s; M9 a+ a

  • ' [9 T* R' Y9 Q! B+ ~0 u8 J& M
  • 4 \1 q0 w4 g- U6 \2 p
  • 4 r) w( }' L) w

  • 2 h  Y+ I  S7 w2 B. p) O
  • $ @) ]$ T! r9 ]/ v4 m$ o
  • 5 F0 }' T3 s9 s% p# [+ ]: o
  • / z; y9 m% ^( h4 l8 G* g
  • & c; ]; m& @: M/ c* ]1 T
  • $ G* q8 c7 @9 C  x

  • 2 _: J: x. `; x# _3 U2 L3 W

  • 8 x# _' ~* ~# i$ f

  • 8 M8 X! J( ~  L+ }
    / W9 {/ Z) L, Y8 s/ M8 k$ f7 ]1 e/ q# }

import matplotlib.pyplot as pltx_values = [1981, 1982, 1983, 1984, 1985]y_values = [22.8, 22.3, 22.9, 21.8, 22.2]fig, ax = plt.subplots()ax.plot(x_values, y_values, linewidth=3)# 使用内置样式画图print(plt.style.available) #显示有哪些可用的内置样式mystyles = plt.style.availablefor mystyle in mystyles:plt.style.use(mystyle) #使用内置样式fig, ax = plt.subplots()ax.plot(x_values, y_values)ax.set_ylabel("temperature(℃)", fontsize=14)ax.set_xlabel("Value") #坐标轴标签ax.set_ylabel("Square of Value")ax.tick_params(axis='both') #刻度标记plt.show()
2 e3 p& _, s; P4 I/ l

所有的内置样式有(print(plt.style.available)):

d30e10d4b7d3d13cbb050ee8986765bb.png


9 a2 I( J8 \& s  ~

2、选择其中一种样式(plt.style.use(‘样式名字’)):

如'Solarize_Light2':


  • ( z$ O- J1 h5 v/ J5 p) B, A5 j7 X
  • 7 n, N9 z6 ^5 ]) T) [

    4 t1 Y( c/ K$ V, f, ?7 D

plt.style.use('seaborn') #使用内置样式fig, ax = plt.subplots()! W0 A/ ~' Z6 y6 U! ]2 F, s: N

9a17c4018c1e024a1157ea1211dd7280.png


7 H3 E8 e) H! _9 v. ]5 t. |/ S

如'bmh':

  • 0 Y" X+ [% `2 t- r" \3 ]

  • ' Z% T6 ?5 S) Z- G1 y" b0 x
    " e, G8 E4 w: T2 I

plt.style.use('bmh') #使用内置样式fig, ax = plt.subplots()
5 _: g# a" p( q  W

56ebedcc5ca84f69b09178876ebf0b03.png

其余的样式同理可得。

6 I/ y! I5 p2 C
第4步:使用Matplotlib绘制简单的散点图

  • 0 r. n5 ]6 ]. M" R

  • . ?& b5 `: V5 Y4 o" N$ x" l
  • 9 ^) D# q4 M" P! o2 {7 `2 M( c" b

  • . z& X. C. G7 h  @% ]: X
  • % J  P" l0 Y3 D
  • 4 c3 r! H1 J# N" A
  • . P( c# c# l& u; Y
  • 8 r. h$ p8 j7 p4 U* w- U

  • 8 F, q( A* `9 W6 w8 m: E7 I$ Q

  • , F. q; A0 d. G/ G( b

  • # |! ^! j  v, r& Q, L
  • , s  s, J# l+ I

  • 9 }" r+ W  D7 ~
    ! q6 t. m  b1 G. i

import matplotlib.pyplot as pltx_values = range(1, 20) #取连续的1-20的整数y =  [x**2 for x in x_values] #x值的二次方为y值plt.style.use('fast') #使用内置样式fig, ax = plt.subplots()ax.scatter(x_values, y, c='red', s=50)#绘制散点图,传递x和y坐标,点的尺寸s#颜色c,可用设置为'red',(0, 0.8, 0)ax.set_title("1981-1985 temperature", fontsize=24) #标题ax.set_xlabel("Value") #坐标轴标签ax.set_ylabel("temperature(℃)", fontsize=14)ax.tick_params(axis='both') #刻度标记plt.show()
  R# A5 ~& p! _: }

注:内置样式可以更换,这里选择的是‘fast’。

32efcf65a4d194fc66072d2c903297f6.png

" a" B  y# d" ^5 }6 |, D$ [1 K
回复

举报 使用道具

相关帖子

全部回帖
暂无回帖,快来参与回复吧
懒得打字?点击右侧快捷回复 【吾爱海洋论坛发文有奖】
您需要登录后才可以回帖 登录 | 立即注册
有风
活跃在2022-10-29
快速回复 返回顶部 返回列表