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

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

[复制链接]

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

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

6c25f72746ee53e9535e73a42eb7c456.png

4 r) z8 j' p% k! {
, ^- j1 V1 [1 Y6 I. a
8 L5 n, k( a! S1 _. E: q; o

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

  • ! |$ H! ~( y" w) W- x2 {
    7 Y7 z; r5 h9 v! ~# W

conda install Matplotlib
4 c3 k$ d$ w3 C) h


0 I8 k) C9 b+ Z( Y! l$ Y4 N, P  t$ ~+ y0 g+ L0 O

# y5 Q1 C  D/ d2 m7 I' K' z. Y% H

第2步:绘制折线图

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

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

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

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

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


  •   K7 z; W7 {4 j8 L. j2 w) t
  • 9 Y; x1 L+ q* u' f1 C/ {5 R

  • 3 B/ a0 ?8 B. d3 C& m

  • * z. H. k( @3 b5 e9 v: S; x# b
  • 3 X" d% T. y/ Z4 T2 X3 i2 B7 N" ~

  • 4 A  K4 n7 E* u" K

  • 7 C: r. d" C! c9 s
  • & u3 a! g* k& b* p1 T3 o

  • ! J; x% `1 F1 t$ L0 {, Q; E
  • * k. n: i5 r( ^

    , K4 {& c6 j. B2 q  k

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()( z! w/ K" w: p5 b1 I& @% o3 @

代码读取后显示:

4cb0033425d1e6233c1ff8177f04baf7.png


( |; b2 D+ N  w/ x

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

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


  • * l3 R" n" Z' u' V  h, ?

  • % {0 b  u" D5 |) u% P+ @0 h

  • 5 }% x" `+ d8 j8 O3 o

  • 8 G; G1 M* \+ X+ G5 q

  • / f# U2 i8 Z5 c0 r7 t# R

  • . r2 `# B: I6 X7 i' L2 T5 b. P
  • ; a1 I, ?" Z* x( t" m, b
  • / P4 L* {$ }3 o" F
  • 8 R3 E( z& Q5 {$ P% c8 |+ V8 l7 V
  • - E* v5 E7 _4 [3 c

  • + y2 m4 P1 ]% l) k

  • 4 V6 R# v+ [9 O; V- b1 g
  • . D+ t) {2 M0 B- L3 ?+ {3 \8 b

  • ) J) V, j" M$ |+ ]

  • % A( e) C1 w2 W$ z0 H# x
  • " T& W9 v  k8 V, Y0 |. ?4 O

  • 9 |' q0 D4 }9 M! `2 [

  • 7 a/ {" K1 u# F" m* v- O. d/ a7 v

  • 3 a1 B  Z' B* R8 O' L

  • ) |% h; W# O9 B( z5 N' {2 ?' j4 ~5 L
  • # N0 L, l5 N+ {4 t% V( [3 Z

  • : W: M5 u+ J$ @3 ~
  • - _! }1 [, s" Q/ |3 k: ?: k
  • % Y, P& B5 @! O% I2 X- C

    7 T) ^; P5 j+ X& V

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()
! J' l. v, P1 q  L' Y2 D2 x

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

d30e10d4b7d3d13cbb050ee8986765bb.png

$ x$ k8 A* a  S. Z  v

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

如'Solarize_Light2':

  • # t1 A( U1 U: x# U

  • + [" A( c& Y% u% F9 P$ Z
    % K8 u* {4 }: {* M+ b0 T

plt.style.use('seaborn') #使用内置样式fig, ax = plt.subplots()4 c3 P/ v( `; h# \. Y

9a17c4018c1e024a1157ea1211dd7280.png

+ H: f, x- v$ e$ t! e

如'bmh':

  •   [1 @/ y) z0 r$ d! K) y9 T

  • + i2 D3 [  Q  L
    1 I  \8 S. X& C! K

plt.style.use('bmh') #使用内置样式fig, ax = plt.subplots()% a* v5 W- ^) w9 A

56ebedcc5ca84f69b09178876ebf0b03.png

其余的样式同理可得。

3 R- A7 _" r" |
第4步:使用Matplotlib绘制简单的散点图
  • 7 M# Z( R% G& P% U: U9 b! y3 z
  • ' t1 M' B% u- G
  • 3 s6 g: _) t5 F& `9 {5 z
  • 0 J! @% l8 b. F! n4 d/ I' n

  • 3 B6 p% A2 E' f4 R

  • . h0 x$ \- C; S: a+ Z7 E/ N

  • 3 s* J: R* Y3 P6 r
  • ; }: E9 s. A& k1 k2 G% k

  • 2 s3 \& b# x" ~* z
  • ' [) \8 m' ~# X& K! z6 x

  • ( T- [. r- F8 E+ S, A
  • * I$ M! ~4 T& q  ]' X7 a# c' e

  • / ^: z) @- S: s: d" S, M2 O+ v/ F2 W! u7 u5 H

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()
: x0 t( E& w; X; S3 a$ ^

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

32efcf65a4d194fc66072d2c903297f6.png

* C5 W$ H6 l, `9 a1 d% O2 z
回复

举报 使用道具

相关帖子

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