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

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

[复制链接]

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

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

6c25f72746ee53e9535e73a42eb7c456.png

; i1 U: [2 H& g

5 ^- A% Y+ |7 F
; o- j$ M8 z1 @, [0 m

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

  • & r. I$ Z( e" c- a' p! X
    $ `! N" ]+ H5 t' h0 Q6 C

conda install Matplotlib' a: P. j; R3 ^: w

" ^0 L. K" ~) W2 K4 N0 D; J4 E- D

) h2 Q2 I3 \& o# x- S
* {8 i. C8 m! X* T1 W( W

第2步:绘制折线图

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

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

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

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

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


  • % j5 O! D! t8 S
  • ' c! z& n' ^" V0 ]! o7 r3 `8 H
  • 4 A9 `. y' [: `8 z' ?4 D

  • . F) L5 a; D6 }% t
  • % s3 ]1 k( c2 R! j/ I# g
  • 2 j# a0 G0 a  B" ^

  • 1 E) i: A' f" \

  • / J# |) x# W* P- i( g( T
  • 5 z4 h) ]5 M! P$ D* C
  • 4 M& `) X' L! O1 s6 q1 x

    ! e5 V, G) E3 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)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()0 l. [8 O8 p! {

代码读取后显示:

4cb0033425d1e6233c1ff8177f04baf7.png

+ G& r1 g9 z9 }. O

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

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

  • 3 J! R8 S: X  U8 u

  •   i$ q1 C8 S) {6 @; I% k% ^
  •   l8 J% A' F' o5 J. u9 I1 e$ ?) w

  • 1 x8 m3 g4 D3 j8 @6 V
  • 3 b# Q- C. f. s9 N4 ]$ O

  • - f: ~: S8 F  v% y7 Q$ Y9 s

  • / v# f% d' P1 T+ P: w4 O+ Z/ R

  • 8 Z5 p* o0 L, h, y/ E
  • 4 x, F7 T1 H) w+ W! j( ?  O% @

  • 0 B2 a( S/ f+ F( d3 S
  • 9 m/ f! {7 [+ ]7 L( U2 Z

  • 4 y; ]- W4 a& A% g: |" k( t! R

  •   m* O: l1 s8 C3 t
  • ' a: w$ u. e. @- h8 |! o* X6 B

  • 8 e7 q5 `1 A4 N! n! a( v2 N' f& H
  • 3 p2 f7 J1 I" L* q% v
  • 8 J3 T) [* {( y) i2 R
  • ; r' o# a* u9 D5 E  k- Q6 ^: M
  • 5 s0 R/ l$ h4 v; a( m& c
  • , `9 D' q! ^9 k. w+ T+ v
  • . Y3 R# S) [* O/ v+ C% G

  • ; S: f& @3 ^1 w: B

  • , v6 T) G8 z" v' b8 j
  • 1 I# Y( I+ M+ d  s0 ?; z$ s& a
    2 m4 a& W/ |1 Y$ 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()
9 P# q* I, A8 b

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

d30e10d4b7d3d13cbb050ee8986765bb.png

# `8 y; m! ?% m. c

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

如'Solarize_Light2':

  • 2 z% [- M( i" m& c

  •   o+ m. n. z% p+ @# n
    9 j: @$ q6 U( i

plt.style.use('seaborn') #使用内置样式fig, ax = plt.subplots()
$ I) K5 u* E' s% _

9a17c4018c1e024a1157ea1211dd7280.png


3 Y5 f  X2 w% Y5 Y5 e

如'bmh':


  • 7 S4 Z+ j; G; z4 c
  • : a; n7 H* s% I; ^$ j2 {3 z

    8 s! G$ {/ q8 I+ `

plt.style.use('bmh') #使用内置样式fig, ax = plt.subplots()
; I6 O7 [7 F! b3 u8 z  p- h! W

56ebedcc5ca84f69b09178876ebf0b03.png

其余的样式同理可得。

: @/ W8 l8 M, _1 s
第4步:使用Matplotlib绘制简单的散点图
  • 1 q7 `5 T  ?! X0 f( X# ~

  • 5 e3 Q, T7 V: @, \) s
  • " [: Q9 {3 X) T+ ^
  • 9 n8 _7 H/ ^2 s4 K3 q

  • 3 t: z5 v  q$ C5 B. S

  • - Y6 w- c% e) j5 q$ {0 f& n
  • ) {% ?. \7 \- V) B3 h9 ~: i
  • - u1 ?+ W- z" i- Y

  • - K9 n4 ~" Z! V! f% v" N7 _

  • + W7 J: [- q) q, o% a0 `7 ]. ~8 c
  • $ X/ u7 A% Y6 e$ j' |

  • 9 Q6 `9 `1 @2 m* G. |7 s3 k, |

  • ) ]6 x" d' b( U: h8 u& _8 n6 b4 r4 Y: Y8 ~, v* l4 L5 g) N

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()
; ?( N9 N3 a0 b& t$ Y

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

32efcf65a4d194fc66072d2c903297f6.png


( q7 l; G6 B( Q. D1 z) @
回复

举报 使用道具

相关帖子

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