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

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

[复制链接]

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

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

6c25f72746ee53e9535e73a42eb7c456.png


! C" R0 q) W5 G9 m+ e+ K/ t$ C0 c, W: z& s# Y0 J; a

( N5 h- G1 P" u, h6 {3 @7 Z

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

  • . d7 a8 g; C# M2 e

    ! }7 S, f- H0 Z- E6 Q

conda install Matplotlib
( s1 B+ T8 w. d1 g, q


# o) A8 N0 P* Y7 m2 m4 `1 \  u& m' P. u/ u
6 t# v+ B% {: M

第2步:绘制折线图

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

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

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

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

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


  • & [6 t8 E  E: ~) ~
  • 1 \" `: [: L7 Q& B8 R2 u5 i
  • 0 `! W2 U( L) B2 a3 g) i
  • 2 A' X8 b% o" n* p
  •   s$ A. H# Z$ D0 V: N; s

  • 4 d$ M% t4 g( R$ b/ ]
  • 6 [2 r4 j! a, w6 [, v3 r, K

  • . l' H/ t# n) q- H, X0 v+ D9 a6 s

  • / T- t: o8 \! B* m8 D
  •   l- J( t9 t4 }7 T
    2 q9 X$ T0 C; s+ L  m0 R

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()
7 m$ |2 Y1 y. m2 f" d  V, a+ C

代码读取后显示:

4cb0033425d1e6233c1ff8177f04baf7.png

, i, U# K% i* L: V

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

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

  • : \$ R1 n. n. }- Z* {- q

  • $ t3 V6 {8 `2 T# X8 S% H, m
  • 2 }( t% M) _; ~

  • $ s- M* T+ X  Q# q5 H2 I

  • 4 L8 @+ b( g3 n; X1 c; q9 L7 K( q$ Y

  • * u, m: f: B) q, G4 Y6 J& z

  • 8 X4 I$ m# S- q  ^* Q
  • ; \7 L4 V% A% I# `& b& A
  • # O* R1 D+ W0 a8 q" v" {

  • ; I: s' R6 k$ }% T
  • 6 v1 X- Z7 @+ }6 L( t# K
  • 0 h/ z% b) d7 Q1 I& V9 [

  • 3 T# E2 k3 L( c3 B& y% X' l2 f$ Z) r
  • 1 I& S. _( c  z, Y$ ^

  • 0 V5 [6 n" E/ o
  • : m; p+ x0 m% a( D
  •   O2 v" V7 A1 M% N$ Y

  • % p  f$ K2 I2 U# U" `; b4 [, i
  • ) W% S+ T6 ?7 g
  • - B0 C1 d0 T6 ]* C5 A3 t- O

  • , a& y1 y/ z5 Z1 T! j
  • 5 B7 r* F# r  g) w: H9 |

  • # p0 u) L% ^8 x

  • * I! [  b& S  A3 z* U( @# I7 A. b. [4 `# b; s! 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()6 Q: }3 |  h( [1 ]: c7 @

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

d30e10d4b7d3d13cbb050ee8986765bb.png

! ~  U4 [9 l6 ?: I8 [& T( {+ [

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

如'Solarize_Light2':

  • 9 X' v* T) r8 d! x4 h
  • / j1 c- L+ x$ l+ r5 a( K
    5 |0 N2 O5 ^7 f$ F

plt.style.use('seaborn') #使用内置样式fig, ax = plt.subplots()
2 b7 r1 D6 U% ~/ A4 c, L

9a17c4018c1e024a1157ea1211dd7280.png


$ x7 a8 a2 V3 ]/ p9 W

如'bmh':

  • * ~, f" V. j1 ]' ^6 x, ~# P- D' g

  • . I$ a9 R9 F3 B) b' R4 |/ j0 }; ~- n+ Z/ y  v; f6 o3 h

plt.style.use('bmh') #使用内置样式fig, ax = plt.subplots(): T$ J+ U+ m+ D0 n5 v

56ebedcc5ca84f69b09178876ebf0b03.png

其余的样式同理可得。


3 H* z7 v6 q9 q6 e5 a* Y7 ~% ]第4步:使用Matplotlib绘制简单的散点图
  • ; C! h6 x) v  A8 f' A

  • " T. z6 c4 {, ?4 R& b

  • 4 c* w) K, P0 I* g* X

  • . `# \: ^) J3 C" ^: }
  • 9 |9 I' _0 m2 g: w8 z# k) d; N
  • 3 c8 w4 N1 P$ l1 N8 ?6 t! |
  • 4 _, G% L; ]- f2 l! ?- z5 b

  • & y4 U1 J! K# X1 I9 L: R
  • " Z- q" Y0 E0 u4 \0 i1 B

  • 6 c3 e' Y/ t* I3 U8 t# K  I' ~
  •   Q- f. ?2 ^, [1 `! ~! v# H

  • 8 X& l  ~9 X6 k  v; ^8 F% a
  • $ c) Z/ \' ?) |

    ; D% R5 x* C+ j+ }8 }

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()
2 T5 p7 v2 u% x, ^  R; s9 r

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

32efcf65a4d194fc66072d2c903297f6.png


& M- h4 d% X' @2 [
回复

举报 使用道具

相关帖子

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