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

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

[复制链接]

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

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

6c25f72746ee53e9535e73a42eb7c456.png


# w6 ?5 m/ p8 ]) A9 j% z$ }& M0 e7 b. c7 F% A9 w( N
, k0 f! G% T; L5 f% e( ~

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

  • % r0 T% z+ q0 @% ~! _0 u

    ' Z( P3 z$ r4 |$ l# U" U# d8 J7 }

conda install Matplotlib
8 ~' C4 x: s+ D/ C& g5 q

1 h+ X+ I9 J9 J7 O1 I# y

! e) F: ^0 Z1 b. x3 Z2 }* }) c! A- z2 o/ K7 K

第2步:绘制折线图

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

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

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

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

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

  • ( R/ P6 y' T* v4 M5 U2 z6 q. h

  • $ H. @! G0 M& k" e
  • : v  @' T0 ^1 O# @" y' b. [

  • 1 J) ~0 K1 L, K5 E& G

  • 4 ?7 L* k4 D0 X8 ?
  • ) L7 E! S: k- Y# b0 B% V
  • . N2 {2 N3 u. M! a( u

  • & I4 r+ h; {: N/ T6 |; c# w

  • $ V3 a, o' M3 [* B% ]' E

  • $ L& P- d) [! r$ I% X
    4 C) u! K- b$ S" X

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()2 H- `: }2 n1 a$ V1 \

代码读取后显示:

4cb0033425d1e6233c1ff8177f04baf7.png

7 y7 H  j$ p0 C2 C

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

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


  • # e3 h3 k7 w' ?) T: Z7 A
  • 7 b7 N( d* w1 _
  • 7 R! [) ~( t# m( A$ Z4 o

  • % h3 {6 J0 t- `) [  ?9 E9 H
  • % O5 j: J' P4 f$ T, N- z/ J

  • ( e8 Q0 u3 p3 V0 z* m  o$ g4 f( K
  • % M  E* k! ~9 l& q7 x5 {) K5 S

  • ' G7 E& S- @1 M3 v4 _0 T
  • $ l: j5 X7 Z$ T3 h/ ]# _

  • # t4 A4 w& t4 M1 G' t, P9 A* M4 X2 O- N
  • ; l) ^3 q4 H7 w# I1 `$ G
  • ( ]; C' T9 F+ K$ H, v

  • 1 g5 H* S/ m8 Q
  • + _- p6 X$ y' y% B! T0 P+ p
  • ' l; V! k1 `  C, V/ h& {5 N

  • : ~( g$ G1 `) s# w1 a4 z
  • ) I$ i$ \' L; R( E

  • ! C; X. D6 `* S4 \6 Q: q7 u

  • 4 e) A* C: t' e- `+ d6 j, w
  • 0 J8 ~; K4 {, j6 o! M* j

  • ( ?& J+ U, h4 `) W
  • * f8 F& P8 ?/ [: m% W, Y: {

  • 1 S6 A; l' g" I9 @7 R$ G9 a( H

  • ) L9 M  ]0 }. |+ q2 j4 B! h3 D. O% i9 c, k" 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()8 n, E! r5 W! Y# ]* i5 d3 b

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

d30e10d4b7d3d13cbb050ee8986765bb.png


. i! W' q" O- c; e

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

如'Solarize_Light2':

  • 6 q* k% e/ a( |/ j* }
  • $ Y+ }! Q: `; Y1 ^
    6 v! R! f* H& d( I" M" y

plt.style.use('seaborn') #使用内置样式fig, ax = plt.subplots()$ q. n; o8 a8 y# k9 S* a+ e3 s

9a17c4018c1e024a1157ea1211dd7280.png

$ V0 B# X0 E5 p5 T

如'bmh':

  • + P- b: \; d6 q$ U/ N5 Y

  • + Q# `$ X( h9 e2 [1 M$ B; z9 H4 C5 l2 R3 Q8 P

plt.style.use('bmh') #使用内置样式fig, ax = plt.subplots()
9 X& P- z! q; @" F

56ebedcc5ca84f69b09178876ebf0b03.png

其余的样式同理可得。


, }- K6 e/ ~' L! V0 Z  g1 x第4步:使用Matplotlib绘制简单的散点图

  • 9 D4 h. o9 `( [4 R1 \3 x* I% C2 n& @
  • # U7 g) N2 W8 e7 ?4 u; Q6 A

  • ) R, U' y& J9 |  v
  • 2 u5 H- F' H, R( z" O+ F% g
  • $ n/ V  L0 r# n6 F2 ^

  •   K/ B# p" q) ?+ |

  • - S3 m" J. h! E
  •   G* u& k) {4 J) N' g/ Q

  • 9 @5 U  ^. a. @6 [& d

  • ( H$ D# _. S5 z# o/ d1 v2 w

  • % P4 [4 _2 i! S4 x/ p# b. D+ T
  •   U: c2 K4 ?+ b# |

  • ! j4 o# U9 E+ i9 k3 ?& U9 b4 @- G: q" T" a& G9 J! `

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()
! Q2 U! _% Q: D! Q- u! K  b

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

32efcf65a4d194fc66072d2c903297f6.png

! V2 j" j: p/ l: b& a  F
回复

举报 使用道具

相关帖子

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