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

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

[复制链接]

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

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

6c25f72746ee53e9535e73a42eb7c456.png

  H. Y# i, R5 F; w, `+ j% i
) p, `8 r% L; E! C5 \4 x6 S
" i/ k- P! [% n, \& E& b! @9 m0 ^$ q! U

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

  • ( [# u1 M" x) N% ?, b
    9 D# p; G7 _& A- q1 _# O/ G

conda install Matplotlib: E/ j! f3 Y. T7 `$ l. r4 c( T. ^  i


  i. e; F1 k7 z+ W( Z. u
& b! z, |7 _6 t0 X% ^3 D3 y
$ G4 v1 l' N% Z, I+ ]# F

第2步:绘制折线图

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

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

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

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

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


  • + N/ Z/ l# g5 T& C. ^; e
  • % _6 f, t# E' O5 a; Z
  • ' `. G% D$ \3 s! ]/ \

  • 9 R3 k. A+ w% f" r8 m) E8 p

  • - a' w9 _0 U* _* D
  • 0 ^  R/ h& x6 U% g* d& a+ H; W
  • 7 a1 \( o8 C- I0 M. W

  • 6 l0 g; i1 y+ w1 d0 Q

  • / @! j5 r, W& C# P! k" z
  • 6 \6 v9 h1 w- ^3 n9 F
    5 p. W: ~2 W% f! j& d

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()4 w4 G6 ?. J+ ~3 Y, d. U

代码读取后显示:

4cb0033425d1e6233c1ff8177f04baf7.png

5 ^& N+ a7 E6 Y4 v0 t/ M5 e2 a

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

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

  • . F! V; P6 N" k. F- x# m
  • ( x# R6 _8 c; _5 T' P$ t

  • 0 p5 j- |+ N. e! T; b  a8 ?

  • ) i' \4 }1 C; x6 S6 ]' a
  •   c: g# k7 H7 g' k$ @7 S' ^! _

  • * w* i' ?4 U* g

  • & e7 \  w% c$ [4 t" ?

  • ' }  M' U9 x; c3 r2 w

  • , o' I5 f/ A  K) X2 w
  • * f" Z. Z6 h. |: l% E3 S
  • 7 Y% v1 f7 W/ ]8 `' G
  • - x; ?; G- h+ F& L
  • / \& n: R5 z7 a+ P

  • : I4 h* X' v% \9 y

  • / G9 C+ [4 ]/ A8 z+ l4 f+ I7 B9 u
  • , w8 b" l9 z6 N5 g
  • : |, ~& [) a: [% Q! Y

  • , K2 R# H- @6 r4 j+ h

  • $ w& C7 e! D/ ?3 h. T) u; s) S2 I
  • 0 Y5 Q5 b/ O$ ?; ]% s

  • ! C) l1 r& E% R; L5 p4 j

  • 3 C; @: _. r  v/ [: A

  • 5 D, `, W2 Y' p% W% v
  • $ n* B4 y( n. O" e) k& X

      b) W$ y! a# X+ T1 y

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()
( T, u* m! P( M0 q3 ^5 d  Z

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

d30e10d4b7d3d13cbb050ee8986765bb.png

) ?7 A) M" l3 |

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

如'Solarize_Light2':


  • ' `! d" n2 `) m" z

  • 6 l% e! q: w* D8 ~' @% A* O: {/ p# U# g' i& N

plt.style.use('seaborn') #使用内置样式fig, ax = plt.subplots()- t0 c% m1 N& @" [8 W

9a17c4018c1e024a1157ea1211dd7280.png


' K& N0 H; Z* |

如'bmh':


  • ! v2 t$ `# d+ D) B) F

  • ( m0 m8 j; j9 o7 J5 O0 E. `7 p" k7 p& m  l

plt.style.use('bmh') #使用内置样式fig, ax = plt.subplots()
) S1 ^5 a' D/ B1 p

56ebedcc5ca84f69b09178876ebf0b03.png

其余的样式同理可得。

( ^1 ^3 v3 G; l1 S: O- I
第4步:使用Matplotlib绘制简单的散点图

  • 8 B; G5 Z; }* Z% U' _# J
  • 0 t1 Z8 O9 l. z
  • ! S! n; ~2 ?* F! ~3 {0 S* W

  • 2 Z0 d+ O9 |4 Q- g: y' A# v
  • ) O6 i3 `- s/ i) x9 ^5 u% q' a) z
  • 8 u6 W/ K& X2 g' ~6 [7 r7 z

  • + c) p/ }. o: C7 P8 d* S2 W- W

  • 5 `# K. R6 N) ]1 F) T# w* \! `7 Y

  • ! E! q3 D& ]6 K/ B1 f4 n: X

  • 7 e2 U3 `9 ^1 T( Y

  • $ y  ?3 Q- }9 N# b
  • ; m. S& E% `7 _% r: v+ K

  • # {# E. F& P% I4 H9 p7 v' S- N9 b: Y

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()
# a2 c8 z% l$ U8 w

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

32efcf65a4d194fc66072d2c903297f6.png


* q) v8 e, ?) ~" t2 g
回复

举报 使用道具

相关帖子

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