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

Python数据分析:折线图和散点图的绘制

[复制链接]
2 V+ D! y# O! g: I) Y/ P/ [! ?

原创:宋宋 Python专栏

( M$ T9 [( s- }4 k" ~

来源:Python数据分析:折线图和散点图的绘制

1 L5 B0 ]% W) v3 x- d

折线图

9 z$ j" R$ j, X8 y; }/ x

折线图用于分析自变量和因变量之间的趋势关系,最适合用于显示随着时间而变化的连续数据,同时还可以看出数量的差异,增长情况。

3 W8 }$ k7 w, p, F7 |* p) X' A

Matplotlib 中绘制散点图的函数为 plot() ,使用语法如下:

matplotlib.pyplot.plot(*args, scalex=True, scaley=True, data=None, **kwargs)

1) 简单的折线图

0 G" {. E5 r- P: a

在matplotlib面向对象的绘图库中,pyplot是一个方便的接口。

d) @5 ]% k4 @( N" H

plot()函数:支持创建单条折线的折线图,也支持创建包含多条折线的复式折线图----只要在调用plot()时传入多个分别代表X轴和Y轴数据的list列表即可。

" F) n6 I2 k5 B3 D2 V5 Q
import matplotlib.pyplot as plt# x. O8 X7 G$ n, ^+ f : F- n R, }. w% C+ Y2 L x_data = [2011,2012,2013,2014,2015,2016,2017] 7 f9 v" C% V B8 G y_data = [58000,60200,63000,71000,84000,90500,107000] 1 r% [0 B) O9 L* e3 t1 [/ z( s ) M3 J/ K: N% N* r plt.plot(x_data,y_data)- j) ^ d5 u4 N# F) t" c plt.show() : e8 I; {8 ^- x2 ~
1 m8 s% K s( [/ Q) O2 o
' q+ s, ]0 M4 I/ Z9 n- q4 v

2)复式折线图:

9 m0 H* D. H- ^
import matplotlib.pyplot as plt & o. R) w; ?. x x_data = [2011,2012,2013,2014,2015,2016,2017]0 L+ X2 ^4 L9 ?/ B {7 e9 g y_data = [58000,60200,63000,71000,84000,90500,107000]6 S4 E" P; ^6 T y_data2 = [52000,54200,51500,58300,56800,59500,62700] & \5 z% ?9 J1 e" r ' D* o9 U3 O6 U5 n plt.plot(x_data,y_data,color=red,linewidth=2.0,linestyle=--), Y, A/ o. h8 l% Y' x" z plt.plot(x_data,y_data2,color=blue,linewidth=3.0,linestyle=-.) 6 G1 ]9 h% @; H plt.show(). P% `4 t/ c& M* T8 N6 d
7 s8 ^* R5 z4 N/ v8 {6 `$ B6 J
% P0 H/ m* e7 Z I! \

注:说明:参数color=’ red ‘,可以换成color=’ #054E9F’,每两个十六进制数分别代表R、G、B分量,除了使用red、blue、green等还可以参照下图小白参数linestyle可以选择使用下面的样式:

- solid line style 表示实线-- dashed line style 表示虚线-. dash-dot line style 表示短线、点相间的虚线: dotted line style 表示点线

参数 linewidth 可以指定折线的宽度参数 marker 是指标记点,有如下的:

7 e" ~6 B$ L! u+ g) q
: J0 U) k9 C' u" I! d+ l! i( j) D

3) 管理图例 对于复式折线图,应该为每条折线添加图例,可以通过legend()函数来实现。该函数可传入两个list参数,其中第一个list参数(handles参数)用于引用折线图上的每条折线;第二个list参数(labels)代表为每条折线所添加的图例

4 G' _5 N6 a5 y; D$ U: N
import pandas as pd4 R- e' D/ y0 J% K import matplotlib.pyplot as plt' G# t3 }8 @* g. F) m9 s {* t , V, A3 H4 K" K# R" ` #读取数据9 C* n* N( X" L8 q data = pd.read_excel(matplotlib.xlsx) 4 S% V8 f: q5 U" ]6 a" h: P/ @6 ~* e4 C* U plt.figure(figsize=(10,5))#设置画布的尺寸 2 ?9 q. K) e$ v4 w plt.title(Examples of line chart,fontsize=20)#标题,并设定字号大小, O- O0 @" p# r4 Q: B plt.xlabel(ux-year,fontsize=14)#设置x轴,并设定字号大小% B7 C$ F l j& O! [ P plt.ylabel(uy-income,fontsize=14)#设置y轴,并设定字号大小1 J/ m0 v. O& [) i 8 q( V$ T4 [# R; y #color:颜色,linewidth:线宽,linestyle:线条类型,label:图例,marker:数据点的类型 + c, M2 v7 z" E in1, = plt.plot(data[时间],data[收入_Jay],color="deeppink",linewidth=2,linestyle=:, marker=o)4 e: O. n5 ^" i# } in2, = plt.plot(data[时间],data[收入_JJ],color="darkblue",linewidth=1,linestyle=--, marker=+) % p) ?+ f8 m( ^, L( ^* i8 [% E in3, = plt.plot(data[时间],data[收入_Jolin],color="goldenrod",linewidth=1.5,linestyle=-, marker=*) % Q$ s8 }& |2 b4 P; [* g0 D3 R6 f6 |7 I' Z+ G0 S plt.legend(handles = [in1,in2,in3],labels=[Jay income,JJ income,Jolon income],loc=2)#图例展示位置,数字代表第几象限 2 e& t1 @ q" i8 e1 C0 D" O# W plt.show()#显示图像 1 ? K2 d& d8 _" \* i8 Y8 c+ ]
& i! O! h* i; B- ]
9 }# H7 I. y# u; F. @

4) 管理多个子图

, U9 ~1 t, P; q/ R" q7 c4 I' s1 E& F
import matplotlib.pyplot as plt 5 n4 u" y7 r% O9 h5 i- K9 ^% } import numpy as np+ ?0 b x' K0 f t import matplotlib.gridspec as gridspec# }7 O1 a" t: y3 n import matplotlib.font_manager as fm #字体管理器; p8 z/ a; H2 D D- R& u 8 P9 w3 D: y8 b my_font = fm.FontProperties(fname="/System/Library/Fonts/PingFang.ttc")9 \' p; M- L( h7 [ & ~5 ?1 o% K2 _! V8 v plt.figure()' _9 l& m c) e: j6 Z 3 l. z. g( s& k4 K4 p8 H* A x_data = np.linspace(-np.pi,np.pi,64,endpoint=True) 3 y2 A3 d }+ Z( u1 j9 C gs = gridspec.GridSpec(2,3) #将绘图区分成两行三列 6 s W9 D" A+ L) t$ y ax1 = plt.subplot(gs[0,:])#指定ax1占用第一行(0)整行' h" w; j$ y- ~0 o9 o0 g6 V% Q" } ax2 = plt.subplot(gs[1,0])#指定ax2占用第二行(1)的第一格(第二个参数为0)* E# d& t& H; t7 Y9 ~4 ? ax3 = plt.subplot(gs[1,1:3])#指定ax3占用第二行(1)的第二、三格(第二个参数为1:3) " b% c, S i- F+ |# d! i! \' r- E a% f# T$ Y #绘制正弦曲线 / u& q1 w/ U" d9 F ax1.plot(x_data,np.sin(x_data)) 3 d0 }8 J( Q2 |7 D ax1.spines[right].set_color(none)* H) o3 n# d4 O8 l ax1.spines[top].set_color(none) 4 y1 h( j+ ~6 H, s2 [& \6 E ax1.spines[bottom].set_position((data,0)). s2 j1 k8 \ L+ W; Q1 f ax1.spines[left].set_position((data,0)) 5 _" a$ S. X: }/ ~# Z- K* ^ ax1.set_title(正弦曲线,fontproperties=my_font)! n+ P8 A( n. V# k* w * u( X& V: s X) F; B #绘制余弦曲线 ( @& \3 C/ A5 P6 X+ u; s ax2.plot(x_data,np.cos(x_data)) 1 j& z! _2 L9 @6 C4 J- o ax2.spines[right].set_color(none) 0 }5 c+ j4 T4 O* @6 Z, ~* ?9 u ax2.spines[top].set_color(none), M- ~. w1 P0 W8 a" U( c ax2.spines[bottom].set_position((data,0)) # c/ }9 E5 |2 J6 |& p1 o ax2.spines[left].set_position((data,0)) 9 p% U" |, e+ G2 | ax2.set_title(余弦曲线,fontproperties=my_font)5 @0 V5 p8 t* B ) B0 ~9 x3 ^+ F- L2 i+ D0 F #绘制正切曲线* \& L X8 b6 I. @0 ]6 O+ H ax3.plot(x_data,np.tan(x_data)), C' \7 j0 G. D6 j+ E+ k Q ax3.spines[right].set_color(none), t l2 _* J+ { ax3.spines[top].set_color(none) + D: @8 g' {" a- r ax3.spines[bottom].set_position((data,0)) 5 [) C& W+ E4 c6 B5 N: f ax3.spines[left].set_position((data,0)) , Z" E5 x9 D- k4 b ax3.set_title(正切曲线,fontproperties=my_font)2 p* C- S- o8 z( l4 m; R) z l% ` plt.show() 8 n* ?* c% z4 X- U0 D' B0 {
! `" K" {8 P: S9 j/ U& I

结果:

4 |6 ?8 |* H [+ Z" E( x; a
' h: Q. Q( ~: J5 @) Q
) f2 d5 D' Q7 N; \: `5 } * Z6 O- L- s7 E* M. k+ @( B" J$ r9 }) } 5 R$ u/ T% N5 y }- l& I r3 \# S5 {/ m$ r7 k
回复

举报 使用道具

相关帖子

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