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

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

[复制链接]
- e% U( `& d. O0 E+ o9 v& Y' y* q

原创:宋宋 Python专栏

, P0 L" O, ~& x0 [8 Q

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

4 c/ k% q% A" H, o8 T& w

折线图

# G: E! ^3 K/ l

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

' m. I: W0 V, D( h0 T

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

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

1) 简单的折线图

) f0 k' Q2 U' t7 b! @( z' G

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

* C7 _1 _: n& Q4 G$ s

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

1 }# {* Y9 N6 `% S" q* L8 q
import matplotlib.pyplot as plt+ L) f R! h: ^2 Q" o0 E' ^# L - d( [( `: P' g% N0 U+ M1 n9 d9 A x_data = [2011,2012,2013,2014,2015,2016,2017] . s" p8 y6 U. E( x y_data = [58000,60200,63000,71000,84000,90500,107000] 2 o5 `6 [' {. @2 x9 z$ E" I& P* z* c4 ~4 d6 x plt.plot(x_data,y_data)8 V. \& x* u/ w g; w, P" g* ] plt.show() , Z8 B6 w/ O9 T8 n F1 k: e
4 z3 b) v) C* j# L7 {9 |
7 Y( f( J5 ~+ d6 @1 y& p/ ?+ ~

2)复式折线图:

X* h# u* ]# G; b( C9 ]
import matplotlib.pyplot as plt N2 e$ n% W3 _) B, P% b x_data = [2011,2012,2013,2014,2015,2016,2017] % J, P5 E$ y; L: q& V& I. m) b- i y_data = [58000,60200,63000,71000,84000,90500,107000]( L4 h A* i4 `. w7 J7 F y_data2 = [52000,54200,51500,58300,56800,59500,62700]) ]; g2 r+ o! j5 \- n1 B" u8 H2 v' x J! F( f3 {& T# m/ l$ u plt.plot(x_data,y_data,color=red,linewidth=2.0,linestyle=--) # v2 X2 V4 B* D1 G plt.plot(x_data,y_data2,color=blue,linewidth=3.0,linestyle=-.)& |, V, y! g* I+ C- } plt.show(); D$ z2 C) x+ |
8 l4 U+ V8 q' x8 e3 U" z5 G
7 \! R" t8 [* u! i9 z) 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 是指标记点,有如下的:

- b! |2 B, h3 s+ L8 n- ?
0 k' }# @. Z7 ~" c

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

( |! V8 T7 K. j1 X
import pandas as pd8 y0 X) J( \# ?% A9 z e# V import matplotlib.pyplot as plt/ {' e1 @: p' p( _9 l) l % I9 s( }1 w* S& {( ?' _ #读取数据6 u4 Y3 D" R; _" X data = pd.read_excel(matplotlib.xlsx)) {3 O3 z; p" r9 x( F7 k 9 U; E! i: D) S- G6 q plt.figure(figsize=(10,5))#设置画布的尺寸- z; \1 `5 n0 p6 S; `1 f4 E plt.title(Examples of line chart,fontsize=20)#标题,并设定字号大小' n, e+ c/ v1 T ~9 ~ plt.xlabel(ux-year,fontsize=14)#设置x轴,并设定字号大小4 ^/ |" \+ y$ {% N* t plt.ylabel(uy-income,fontsize=14)#设置y轴,并设定字号大小 1 ~" S1 p( [' N' v$ @" f 3 a4 p- C/ P4 E2 D5 q7 ` #color:颜色,linewidth:线宽,linestyle:线条类型,label:图例,marker:数据点的类型 0 l* Z5 S" N8 i in1, = plt.plot(data[时间],data[收入_Jay],color="deeppink",linewidth=2,linestyle=:, marker=o) 7 P9 O# J# m9 S F' P in2, = plt.plot(data[时间],data[收入_JJ],color="darkblue",linewidth=1,linestyle=--, marker=+) . t- B) D2 S! Q4 T+ | in3, = plt.plot(data[时间],data[收入_Jolin],color="goldenrod",linewidth=1.5,linestyle=-, marker=*) ! L2 ]: `: \9 _ + i: F& w* Z X7 O' o plt.legend(handles = [in1,in2,in3],labels=[Jay income,JJ income,Jolon income],loc=2)#图例展示位置,数字代表第几象限 3 x" s, b( |4 t) p plt.show()#显示图像 _- O7 K4 x7 }" D( k8 Y0 ]5 z1 y
- s K1 w4 L6 r- a$ t; H2 I/ O
/ F% G: b' S0 U: v5 l

4) 管理多个子图

. A4 V" M$ L/ J' x) Y$ d) D
import matplotlib.pyplot as plt ! S$ D% x! A6 Y1 n2 v" H' o import numpy as np + R, I& W f3 p ?5 k* O" J) c import matplotlib.gridspec as gridspec; M2 M2 p/ l( c import matplotlib.font_manager as fm #字体管理器2 ]4 [+ S( j }; C : \, M- m6 f+ [7 n: Z& x my_font = fm.FontProperties(fname="/System/Library/Fonts/PingFang.ttc")) ?, s' M2 O" ^ 9 z- \1 ~' |& ~+ v s plt.figure()# @1 @5 l+ U8 x- E % ?/ W# F+ Y, \0 g) w x_data = np.linspace(-np.pi,np.pi,64,endpoint=True)+ d5 A3 M6 z3 g4 a9 A gs = gridspec.GridSpec(2,3) #将绘图区分成两行三列$ \) w- Q. b# B) x C7 [ } ax1 = plt.subplot(gs[0,:])#指定ax1占用第一行(0)整行 * L' S* M: m9 ?3 B1 v S! x ax2 = plt.subplot(gs[1,0])#指定ax2占用第二行(1)的第一格(第二个参数为0)' S2 b3 A- I: k ax3 = plt.subplot(gs[1,1:3])#指定ax3占用第二行(1)的第二、三格(第二个参数为1:3) ( o3 P! ?9 h( l0 C @3 I. ~/ g. Y" M+ \7 }& G* X7 ~2 v1 e5 g' j% T& q #绘制正弦曲线6 G1 ?9 @& C9 j" n0 b2 r9 s, U' F ax1.plot(x_data,np.sin(x_data)) 8 [' K6 A6 x* F) l) l ax1.spines[right].set_color(none)8 U: f+ U1 Y/ ]" d( T; ? ax1.spines[top].set_color(none) , ~+ y w7 j( p$ p5 l& X, g* ` ax1.spines[bottom].set_position((data,0))- \8 k* p( r& R ax1.spines[left].set_position((data,0)) % W) i! y. ^0 ]8 D ax1.set_title(正弦曲线,fontproperties=my_font)) W, J' n5 c5 u4 P3 W! ^6 I+ y3 S " b: |+ H- |' m+ f" ] #绘制余弦曲线 * G* R) i6 C; |* O) K5 C7 q9 n- v ax2.plot(x_data,np.cos(x_data))1 t8 ]) }( G, A( C0 v ax2.spines[right].set_color(none) ' |( z% a) l8 M1 T8 C ax2.spines[top].set_color(none)( f7 X6 F5 K4 Q6 V w0 ^ ax2.spines[bottom].set_position((data,0)) ! d' K E3 ^0 P ax2.spines[left].set_position((data,0))2 i F$ E; c+ E ax2.set_title(余弦曲线,fontproperties=my_font) ; g' E4 O, f+ n+ T9 w9 g; i2 p1 A- h& J: l" t: } J, b: b #绘制正切曲线# n# C0 Q5 K5 y. V' C7 V ax3.plot(x_data,np.tan(x_data))% b3 F# E2 e J, d ax3.spines[right].set_color(none) 2 q# b4 o+ S8 `( i ax3.spines[top].set_color(none)) O( z" c9 @. X- f ax3.spines[bottom].set_position((data,0)) ( @( o+ K/ o( i* }/ p. j4 ` ax3.spines[left].set_position((data,0)) x( T+ `" N! W) l ax3.set_title(正切曲线,fontproperties=my_font) ~$ X/ {1 F8 g/ |7 M, E0 p7 \ plt.show() ! J6 i. e5 i3 @1 V! q5 J
0 f% g: O3 ]& G: a9 {

结果:

1 t2 E) ~, C g/ {1 S F
* H6 c5 l" ?, a& F. m. z8 g
7 M4 j* A7 X1 B. I e6 V# E& Z- w [- K & E, D9 g9 h. n/ C) N+ Y8 W3 n0 Z7 E# Y1 K: y% w' N / Z( h' s7 x2 h6 k q
回复

举报 使用道具

相关帖子

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