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

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

[复制链接]
% ?- `: I# K( O- d. u# m+ L

原创:宋宋 Python专栏

$ f" w: \6 _7 d! B3 q

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

$ ?* m/ ]1 c5 w( \( Z2 y$ A

折线图

2 t% z7 H- T$ W- f

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

$ |/ d. J# q1 }) X1 X( z9 H

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

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

1) 简单的折线图

( P$ \! d& t7 l7 E& ~

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

8 q0 r' E, _6 r: B

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

8 t" @6 k9 Q' |" y
import matplotlib.pyplot as plt 9 ^% {9 ]3 @9 u5 U4 V) I. ], r2 C+ V- x& E" q, k x_data = [2011,2012,2013,2014,2015,2016,2017]5 m# C4 h. Z3 I y_data = [58000,60200,63000,71000,84000,90500,107000] 3 S; A( O5 ^- W3 C9 \; w/ O2 G- @$ r* k$ z6 C) p( Y plt.plot(x_data,y_data)+ G3 G' A) ]6 a1 }+ O1 s3 j plt.show() % Z% P s" L; o! ]. F! g* x9 K+ M
, C$ D7 f1 p, ]# ?4 I/ R# G8 j
, S, c& N* e3 q

2)复式折线图:

G9 [8 j# u9 @2 O% V8 Y3 F
import matplotlib.pyplot as plt / m9 u8 d/ }3 P. A/ ?3 c7 j x_data = [2011,2012,2013,2014,2015,2016,2017] ' m; V& S: t3 Q5 z: e y_data = [58000,60200,63000,71000,84000,90500,107000]7 P4 `# Q% P0 f y_data2 = [52000,54200,51500,58300,56800,59500,62700]6 Q5 U1 E# |( }2 O6 e6 W, l% R }! r $ c6 N5 {, w% s: W* {) l plt.plot(x_data,y_data,color=red,linewidth=2.0,linestyle=--) ( d' ^/ M) U* G+ M5 e plt.plot(x_data,y_data2,color=blue,linewidth=3.0,linestyle=-.) 3 j2 b7 W+ V: J2 `( R plt.show() 5 v; l+ `" @* }4 }
2 l: F7 Q5 x. P W8 o# Z" W; @% s
" _; h, T, k) K; u( h! f

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

# m8 g% A# r6 K" Q7 |' Y8 {
# h4 P2 s% Y' @& Y& Q

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

{- `# M1 |$ K% C1 b( {
import pandas as pd0 O# m2 m0 t9 s7 H' ?7 s1 H import matplotlib.pyplot as plt9 r0 V4 e2 N4 u6 [ 3 E a# p4 o" J0 A5 _ #读取数据2 P6 ]7 j* I+ o data = pd.read_excel(matplotlib.xlsx)! G: E j4 C- a' Q5 m. h* r- Q! m 3 d" Z( Q: q, t! o plt.figure(figsize=(10,5))#设置画布的尺寸 # q( n* r# n( B5 p" [: n5 a plt.title(Examples of line chart,fontsize=20)#标题,并设定字号大小$ i( ?$ M! R6 K! |5 ?; r plt.xlabel(ux-year,fontsize=14)#设置x轴,并设定字号大小: B; J. p. t+ O+ d plt.ylabel(uy-income,fontsize=14)#设置y轴,并设定字号大小 8 }2 R4 B) c, U4 I }$ v7 {* \& |' z. v; E" L8 R4 ]' s6 X. \8 n #color:颜色,linewidth:线宽,linestyle:线条类型,label:图例,marker:数据点的类型3 `0 s% Y6 w" p5 T" d { in1, = plt.plot(data[时间],data[收入_Jay],color="deeppink",linewidth=2,linestyle=:, marker=o) ! A; s k% Q+ a* T7 k in2, = plt.plot(data[时间],data[收入_JJ],color="darkblue",linewidth=1,linestyle=--, marker=+) 1 p6 N% F/ ~" r in3, = plt.plot(data[时间],data[收入_Jolin],color="goldenrod",linewidth=1.5,linestyle=-, marker=*)+ Q" ~+ c2 i9 L' t' s 2 ~3 c/ D: b% n6 ]2 E6 k plt.legend(handles = [in1,in2,in3],labels=[Jay income,JJ income,Jolon income],loc=2)#图例展示位置,数字代表第几象限 . p0 ~1 {9 i: I r, g& z- k; m plt.show()#显示图像 ' H) c& g( z3 Y" X. ^9 n
9 Q6 v7 M% [, h7 {* T3 ]6 ` g
0 @+ \( K' a9 x# o

4) 管理多个子图

, N8 ~; Y# q7 n7 }1 x5 F# C
import matplotlib.pyplot as plt$ e5 I$ W9 `0 i7 H import numpy as np/ u: ~5 `! {5 @% I! V2 y9 Y# X import matplotlib.gridspec as gridspec - t, B+ o6 e: a5 i import matplotlib.font_manager as fm #字体管理器6 m' a' ~! V* m6 |4 F; t - ?. C3 R" ]2 M$ v) o my_font = fm.FontProperties(fname="/System/Library/Fonts/PingFang.ttc") H Z5 p* q* p# V # Y& k& n6 o, Z8 Q/ v plt.figure() . h0 ]' a! ~4 q$ f) a7 g( H& R- q2 r' Z8 ]: f* U6 K x_data = np.linspace(-np.pi,np.pi,64,endpoint=True) + c1 b7 h3 _+ v' q) F. R: p- |. O gs = gridspec.GridSpec(2,3) #将绘图区分成两行三列/ t& p* K- q0 B* q* Q- N ax1 = plt.subplot(gs[0,:])#指定ax1占用第一行(0)整行 1 ~# N" c( d0 t Z8 T5 T" E ax2 = plt.subplot(gs[1,0])#指定ax2占用第二行(1)的第一格(第二个参数为0)- i6 c( X: P3 A* k( x ax3 = plt.subplot(gs[1,1:3])#指定ax3占用第二行(1)的第二、三格(第二个参数为1:3) , W" M! P/ I, N0 S$ y' w( Y% k2 x #绘制正弦曲线 4 ?2 S8 ^# G+ x5 s" U6 K+ g# p1 R" Z ax1.plot(x_data,np.sin(x_data)) 2 }5 t+ M" R3 {7 l ax1.spines[right].set_color(none) 0 ~+ O# s g5 y: J) T ax1.spines[top].set_color(none)0 D7 e$ J* e6 n/ o0 E$ h v2 H ax1.spines[bottom].set_position((data,0)) 9 X* Y, p$ q6 g$ Y9 Y1 i% E ax1.spines[left].set_position((data,0)) 5 \9 R8 y7 J% I7 @& u5 y+ `1 F ax1.set_title(正弦曲线,fontproperties=my_font) ( n: [+ F( J) B* s. [4 W7 b3 d + H" s, H' H/ r- F- F #绘制余弦曲线& d$ |: _& j2 r2 g" L$ k+ R ax2.plot(x_data,np.cos(x_data)) ; M. q' m# t! B `9 x- L ax2.spines[right].set_color(none) , S, g' i+ ?- H ax2.spines[top].set_color(none)% }1 q) l1 J7 D* I U# _4 r, ] ax2.spines[bottom].set_position((data,0)) : q# U$ q+ a# A$ Q/ H% m ax2.spines[left].set_position((data,0)) & [8 L% B z( X5 o. [3 A ax2.set_title(余弦曲线,fontproperties=my_font). Y6 g) h2 h0 b 7 n9 q4 d- u/ H3 x #绘制正切曲线& T# `5 q/ x% ? ax3.plot(x_data,np.tan(x_data)): M' E- {! s- E! K ax3.spines[right].set_color(none): R* p9 e9 Q: m ax3.spines[top].set_color(none)* a) a9 i, F, ^+ f1 w ax3.spines[bottom].set_position((data,0))4 B) N9 ]4 D- n, A ax3.spines[left].set_position((data,0))! M7 o- ^' { d ax3.set_title(正切曲线,fontproperties=my_font)4 `- f' @5 `$ t7 m) x7 P# | plt.show()! ]9 F8 M( M6 B: x" W
: D w7 r4 {) K% x$ m

结果:

: c2 s0 Y+ I: y6 w! w! M
3 B/ [ w: @* G8 v2 I
2 V" {5 a9 N2 O! ] 4 l, i& ]2 m ~% @+ i( O ' g2 N" o) e3 q4 C0 ] . }9 `# y9 g- G7 S7 Y. D " \; S+ ?( t; g% @0 U7 N8 C+ e
回复

举报 使用道具

相关帖子

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