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

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

[复制链接]

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

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

6c25f72746ee53e9535e73a42eb7c456.png

# @  j6 J7 ^7 z; I! ~" ~# t! `

3 M: O, [* v- |# P
- o+ Y3 e4 \/ \+ {0 n

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


  • . Y1 J2 u( E& q/ g, R- ?+ x& b  _
    5 ~& N1 {7 W4 ]6 t: e3 m

conda install Matplotlib
  S. G. }3 w0 {3 b


! f0 V( \3 H3 e- e' q/ Q' u2 t- G7 _& [9 K: x7 ?9 [4 O

+ |) T, c# D" ?' c& O

第2步:绘制折线图

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

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

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

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

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


  • 4 [2 f9 m, F' Q2 V+ U! h9 \7 A2 D

  • + F/ i( U  b# K  Z, b+ h

  • & f5 y7 B' @" ?

  • 5 B/ U- [" r1 G6 a( ^' n
  • ) i$ T" m) M# |2 D# U
  • 1 L) H7 n% I  j) l. _

  • 0 s4 t9 Q% z8 b. `, r
  • - R# k0 W8 Q6 M9 M
  • % u4 u+ a$ ?. _8 W

  • ! s  V5 E" L$ }) l6 C: v7 ~2 ~
    / ?6 g; M. I. I) S" u1 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)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+ I# I: d4 j' }0 e

代码读取后显示:

4cb0033425d1e6233c1ff8177f04baf7.png


$ C) W4 h$ j- Q3 A6 R0 L' V

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

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


  • ! |: s0 J. p0 a3 j# {. g

  • / ~3 f( J5 s$ g. W7 j0 J& c6 u
  • ! l! I) _; u9 Q0 e# v2 ~. R4 t4 s
  • ' J; r* X$ s' o/ b& m9 |

  •   ~) `0 s. N' |
  • 0 v1 u) i  B( i3 v

  • - [& h+ S* |8 u) D$ g! e

  • - j0 s# H% ~% }6 ?  s0 U* _9 l- ^# m

  • ( h: P5 l, P* B

  • 8 S8 w+ a6 f" \- Z9 C' ]' }

  • # E9 w3 H) v5 L+ Q2 U
  • 5 V, j' A2 j2 U4 d+ Y* K* i1 Z1 K
  • 1 F! [* }0 e5 e4 k! U: ~  s
  • 6 t# V0 v% C: T, W" \9 E, ^  X* ?

  • 0 k0 z1 \9 h7 ]! _$ h

  • / }+ S) S7 ~. r! T4 N
  • 2 x/ I  r* S% w# S8 ]; D2 U

  • $ a4 }7 F7 M; `3 [

  • ! R* N2 @2 u+ R. ?
  • 4 z1 j5 `' L+ t# A5 j4 j
  • , k% H( t. C4 `" i

  • 8 n* Z3 r8 }/ a: z! X7 W2 @

  • 6 g# s6 p4 q. O0 q' ?% D$ g
  • 5 @& K/ T7 N4 p# P3 f

    6 g5 P  O0 j- Y8 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)# 使用内置样式画图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()& v8 I6 P- q* Z

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

d30e10d4b7d3d13cbb050ee8986765bb.png


! F( W2 k* S  v6 ?1 V# F: q+ x

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

如'Solarize_Light2':

  • / P# m$ M) m9 C' g

  • " Y% Z  @6 j) f% c, e2 P. D; \7 S- d  h

plt.style.use('seaborn') #使用内置样式fig, ax = plt.subplots()
! R  v; G' I9 s( N: \2 e

9a17c4018c1e024a1157ea1211dd7280.png

  a8 `4 F* z$ H2 W7 e

如'bmh':

  • % _$ _, M$ R2 n7 K+ S& F
  • * v! H0 Z7 u5 g* U1 v
    , z. t: ?/ t5 [, [* e3 k( Y* K

plt.style.use('bmh') #使用内置样式fig, ax = plt.subplots()
* ]; G, a  s& U* [* g

56ebedcc5ca84f69b09178876ebf0b03.png

其余的样式同理可得。

/ X$ K$ ]* i& I4 w) P# v5 Y( C* Y
第4步:使用Matplotlib绘制简单的散点图
  • " y! }& X! B% x$ ^8 I( v
  • + }4 P4 f% o/ W3 L/ i$ @

  • : ~' d  q& X/ _/ H: k0 b1 \! c

  • , @. N6 V) ?- k6 o1 H$ h5 F

  • & o4 ~4 Q- P: Y$ m8 y/ d2 y, b

  • $ A0 D9 d3 w0 x1 E
  • ; J1 B  M1 e. h8 F
  • : t# C. B0 J0 S

  • + f5 y  g. \. D
  •   G8 C0 m% ?6 r1 r! W1 i+ ?
  • 8 u" X5 j4 W6 o4 [' j4 E& S

  • 4 M5 [( r" h" ?' H$ |7 m" \

  • 6 z9 m0 s3 e  O* b* i! T/ j' u
    / F2 _* b; ^: |" E) V

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()' M$ B% u1 k4 r

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

32efcf65a4d194fc66072d2c903297f6.png

( @* Q$ c7 l5 p" E- \- d& Q" m* T
回复

举报 使用道具

相关帖子

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