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

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

[复制链接]
; n7 f* x/ ^# G( d, z

原创:宋宋 Python专栏

3 k1 z" y b6 W. ?* G2 U( f

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

- @! M" L7 m# Z: W7 Y

折线图

& w: n, f, a) q3 _* g

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

* d! p h; D& x5 M

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

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

1) 简单的折线图

9 ~5 Z% e E6 |* R: R8 ]

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

; B N7 t7 _2 l# I

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

- R2 w# G6 Q/ @7 W. r
import matplotlib.pyplot as plt " E }, K [+ I! Z+ M; e! N/ |& Y" \ x_data = [2011,2012,2013,2014,2015,2016,2017] o/ [4 p: Z0 F2 d7 D5 E y_data = [58000,60200,63000,71000,84000,90500,107000]" [3 }1 B1 x& C# y 4 J5 e% L* C: B* m plt.plot(x_data,y_data) / H6 _4 M' V1 y" a }7 O0 N* M3 S plt.show() 4 N7 C5 B( v/ o$ K" m r' m
: k& w1 O& \7 ^3 J8 z
' |: J6 p9 C$ k; O

2)复式折线图:

& f' |( t+ j- Y% u* T
import matplotlib.pyplot as plt ; m$ S( ?6 t; ` h x_data = [2011,2012,2013,2014,2015,2016,2017] H( G( Z8 j) } y_data = [58000,60200,63000,71000,84000,90500,107000]' n' O7 Y3 W# [: n0 e6 M y_data2 = [52000,54200,51500,58300,56800,59500,62700] 0 b6 i. o; K8 d& J. @' e! H& y$ P( z3 z4 T9 d1 Q1 V" | plt.plot(x_data,y_data,color=red,linewidth=2.0,linestyle=--) 9 c6 _# T4 P9 Y plt.plot(x_data,y_data2,color=blue,linewidth=3.0,linestyle=-.)4 n& ~) Z5 R/ L1 f plt.show(): a2 x8 k" [2 r8 U/ {! O, w
3 i7 q2 y- P, k: h, I) n9 ?& ?4 a
4 v, K6 z# C9 t

注:说明:参数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 是指标记点,有如下的:

9 `; D6 c8 S3 ^( F0 Q( P v6 j
8 X. z' m6 [: \9 l3 o

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

M7 u: O: M5 [' E' f0 J& }6 s
import pandas as pd # X! x3 K, f9 {% k7 | import matplotlib.pyplot as plt" [! E9 _9 D* D) z$ O6 _% ]1 [2 j$ S `" ^; f, p0 l# s; a #读取数据/ ~8 v/ g+ l& E# P data = pd.read_excel(matplotlib.xlsx)5 U, Q7 k }) N: D$ Y7 I1 l: N/ A3 l& T $ i( ]9 c# C$ v: O plt.figure(figsize=(10,5))#设置画布的尺寸 - E1 A# a6 v- L# q' | plt.title(Examples of line chart,fontsize=20)#标题,并设定字号大小 1 x: v% `8 m( Q plt.xlabel(ux-year,fontsize=14)#设置x轴,并设定字号大小/ Z: I! o2 K7 [+ T1 s2 P plt.ylabel(uy-income,fontsize=14)#设置y轴,并设定字号大小0 V$ Q- y9 i0 i' o; Y8 A* N$ @ 7 o$ T4 I) S7 c: e0 s #color:颜色,linewidth:线宽,linestyle:线条类型,label:图例,marker:数据点的类型 : N6 p! S, q- B: g. d8 e- E8 G in1, = plt.plot(data[时间],data[收入_Jay],color="deeppink",linewidth=2,linestyle=:, marker=o); n+ J: Z; z( c- j7 V in2, = plt.plot(data[时间],data[收入_JJ],color="darkblue",linewidth=1,linestyle=--, marker=+) 2 L3 J4 B( x( `4 C+ U% b# X in3, = plt.plot(data[时间],data[收入_Jolin],color="goldenrod",linewidth=1.5,linestyle=-, marker=*)' l. J) b& F2 |. N7 Q9 x % D) O* O2 C+ j, H plt.legend(handles = [in1,in2,in3],labels=[Jay income,JJ income,Jolon income],loc=2)#图例展示位置,数字代表第几象限* K5 Q* z& }$ v( ^' f4 ? plt.show()#显示图像9 H) |) l/ e. n. {. j0 A
& {& X3 T" y2 |$ Z# ^
9 | b4 s2 x6 G# @4 t0 d3 r

4) 管理多个子图

Z+ D9 B6 `9 o2 m4 u1 i
import matplotlib.pyplot as plt/ h$ {; \, \; n7 ] D- S" d import numpy as np " S) e; l2 l6 ?; w import matplotlib.gridspec as gridspec 1 N& x8 G; Q" J1 E% `& \$ ` import matplotlib.font_manager as fm #字体管理器 ( x1 {5 s8 P: }9 B! A! E- |; i: J% U5 P4 Y4 J my_font = fm.FontProperties(fname="/System/Library/Fonts/PingFang.ttc") 4 i/ {2 b, S) ^9 m 4 c1 f4 Q6 M) V* ~( S plt.figure() $ l+ C5 t; F% G8 W # I+ I. C L+ N3 S2 |+ f4 ^ x_data = np.linspace(-np.pi,np.pi,64,endpoint=True)5 u! N8 w& L9 o5 c- B; \- K j gs = gridspec.GridSpec(2,3) #将绘图区分成两行三列- p, B* d `) {: {) k+ G4 a ax1 = plt.subplot(gs[0,:])#指定ax1占用第一行(0)整行" v$ W) r3 u: s% b ax2 = plt.subplot(gs[1,0])#指定ax2占用第二行(1)的第一格(第二个参数为0). J# n. b" o* t+ s7 ^( N ax3 = plt.subplot(gs[1,1:3])#指定ax3占用第二行(1)的第二、三格(第二个参数为1:3)& |9 }; v- U/ A2 B! D7 \ & [- i9 I& ~+ U- M; K' [ #绘制正弦曲线0 x7 C' w+ s; R5 I* V8 ?5 J0 N ax1.plot(x_data,np.sin(x_data)) , x% W! L. E5 G% @- }0 N ax1.spines[right].set_color(none) . i6 c, L; s: N. x ax1.spines[top].set_color(none)4 C+ ?3 ?0 `% \8 l8 |6 s ax1.spines[bottom].set_position((data,0)) ) H: ~0 }+ l# | ax1.spines[left].set_position((data,0)) J& p$ T A5 l# k: |; A ax1.set_title(正弦曲线,fontproperties=my_font): k5 v) u5 M. H3 _ A' P6 [ ! M6 i8 O7 k, A* P/ ?6 O #绘制余弦曲线 " s9 c/ z2 D K( x ax2.plot(x_data,np.cos(x_data))7 g3 X$ C. b$ U+ X1 P1 s1 A ax2.spines[right].set_color(none) 5 N/ v0 Q# A7 n3 W ax2.spines[top].set_color(none)6 d% Q3 q( ^2 l- u ax2.spines[bottom].set_position((data,0))& C% J1 J# X- N r, b& o1 `( N. c } ax2.spines[left].set_position((data,0))" h+ Y: v6 \7 l5 q I7 x5 f/ B0 l ax2.set_title(余弦曲线,fontproperties=my_font) ! _8 I' _5 v7 F! p ' d, o( w0 K- v6 _$ Y% n1 a. P0 M #绘制正切曲线( |$ A( x3 g; C2 G6 g# _& V ax3.plot(x_data,np.tan(x_data))# t2 i/ z! ]5 i4 _7 r* x ax3.spines[right].set_color(none) , T G- h6 V0 w% u/ ~9 k ax3.spines[top].set_color(none) ~0 ]3 v: L( k- C1 g7 K# E ax3.spines[bottom].set_position((data,0)): {4 d. g5 U* G- F' S0 H ax3.spines[left].set_position((data,0))4 ~) U0 j; q! F" P; q ax3.set_title(正切曲线,fontproperties=my_font) + B* d3 h# J% u e T. T/ { plt.show(). Y. v7 p" |6 ?
u4 |: j3 m) F' J8 u. L3 V" |+ \

结果:

/ X6 }. a! i" }
3 r; Y- { S0 X. D
& ~9 V& ^& l% m+ b( g" j# v3 J1 V) O: g' N+ v# N5 w: J9 c 9 d4 C0 ~8 ~6 M # R- A4 f0 h5 F% u* G% V 1 l4 } q" @: \' ^/ _$ H! g! Z
回复

举报 使用道具

相关帖子

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