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

[复制链接]

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

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

6c25f72746ee53e9535e73a42eb7c456.png

2 r& H, d; ~" Q+ E. W' V6 ]4 J
$ o& i: h7 [* Y+ j& ^: x% N/ l# S
- @: C8 M  E* W* D' t" d+ W% ?

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


  • + w  }3 I, g9 h' `( G8 E! Y$ N- p3 W9 P

conda install Matplotlib
- m. X" `# m, M7 J

3 ~) ^% r9 x7 A# Q" ~

) \0 ?$ h# w. @  X( [+ i6 {; U* K7 e# V

第2步:绘制折线图

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

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

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

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

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

  • 0 _( [+ R5 W3 @; B
  • / y6 M: J6 {1 j: c

  • 7 Q7 G  D- Y# d. `& S9 {+ Q

  • ) m% P% }/ b! I# U% I  m
  • 9 @; N- J; k0 a, V: ], v" m8 y

  • 3 G, d7 O- z1 d0 E: n

  • : M* o3 X4 w8 L& q

  • ; d, x( a" l1 h

  • & O  _5 i% j- E6 y! i- n

  • - x) k6 s! c0 J+ E
    3 x7 N6 u% S0 F

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()
" @1 n- z. M1 Q0 v2 P0 ~1 \7 e

代码读取后显示:

4cb0033425d1e6233c1ff8177f04baf7.png


, Z  t2 j$ G! q. g. K

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

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

  • ' x, l3 Q2 e! }( D
  • ; {  V/ _" u6 V* C" m4 v

  • ' ]0 d; C. c/ n8 f4 d

  • 0 z( F5 L& u/ j

  • + x2 i: b7 E) u, |& \) o' p1 Y5 z

  • , u# ~  l1 i( O0 i/ V# E7 s; M
  • ! q7 b; ]1 ^# x" x+ A+ z, N. t
  • $ e' V) K. Y$ T
  • 4 R: O6 Z# j4 Z- n7 t5 g

  • 5 c  _3 q- U9 O( G3 G& k

  • 9 W8 H4 ^8 d4 k6 \$ i- O
  • + R. }' f$ L7 Z$ a- H
  • 4 c: Q2 E% Q* c- x9 x8 S" l

  • % `5 _5 s" w9 T9 r* b- c5 M+ X

  • 8 i+ J8 i& L* |- {
  • - ?4 D/ M+ T$ P& u2 Z$ l

  • $ U, M+ E6 r7 v' D$ ^, X; c
  • ( R! n8 Y2 A$ {* O/ T# r
  • 7 B' T3 S& \. P, }" _  Z8 ?

  • & I& z8 d6 {' \$ S! l. q: V

  • - f. b5 b7 `+ f
  • ) s; `8 _' [9 c! N0 \. R5 k

  • % T0 d1 V8 `- z8 E, z
  • * T. R4 k& u1 o. x! h

    1 |& S) J/ M. y4 c( j

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()! S7 d' k/ }+ ?6 e

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

d30e10d4b7d3d13cbb050ee8986765bb.png

5 R9 G  @, i4 B& i9 i3 d' o

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

如'Solarize_Light2':

  • : X6 w3 K6 v, _! j; m
  • # h* O9 @' m2 B: w

    ! o, w+ D3 [0 n0 A1 C

plt.style.use('seaborn') #使用内置样式fig, ax = plt.subplots()
8 @( p: \) d7 ~

9a17c4018c1e024a1157ea1211dd7280.png


6 R: g% v/ o# q/ A

如'bmh':

  • ; \) ~) k1 r4 u6 h* F. H3 @$ H

  • $ H$ q% z+ P, H# J5 p9 c% o; t$ F0 @3 @1 P2 X# x

plt.style.use('bmh') #使用内置样式fig, ax = plt.subplots()
0 r" |2 D5 C0 s" [2 }

56ebedcc5ca84f69b09178876ebf0b03.png

其余的样式同理可得。

+ P# L; a) w) R
第4步:使用Matplotlib绘制简单的散点图
  • 0 J7 s: e3 o, x' d6 E

  • ) l+ Z8 V) f. ~# A: E
  • % d9 ~( g: w$ ]* f

  • : N/ M8 |, H7 j, _6 I$ _

  • 9 |# @* n' S7 c8 Z

  • 9 ~/ c/ J; x- T

  • ; X3 C* s) r8 z% r& F/ L$ x- C

  • $ Y7 o! J& o  j/ f) K6 [! B2 ^" u

  • % z; ~7 }, X% E& ^* D
  • ' d2 }9 T- Q# [" c4 y" R

  • 0 z9 [7 G* m* B% h

  •   ~  Q- q, p' o' }# s( R- j3 M! a

  • : p# k& S$ D( g. `2 `2 v& |% S0 t/ p" ?, X7 w( M! a

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()
& P$ V: {& l5 g9 q% S6 Q

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

32efcf65a4d194fc66072d2c903297f6.png


+ v) M' X# c$ @$ P$ Y/ M
回复

举报 使用道具

相关帖子

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