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

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

[复制链接]
* A7 c6 n. \, \6 F

原创:宋宋 Python专栏

* i- \0 d" @0 g6 U) G8 F3 A

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

9 _8 T1 U) ]5 @ ~4 q: K- b: s# M+ S

折线图

+ r2 G5 S) `1 U! Y

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

7 V. c* K `+ P& U! Y

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

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

1) 简单的折线图

7 E. o# _0 Y3 A; B( }- j

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

/ ?) H( y' L* W! y' }+ W

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

+ C0 V! F% p7 i j1 o
import matplotlib.pyplot as plt 5 Z7 Y B/ h/ X5 w+ g4 r! s6 p8 g% R! K x_data = [2011,2012,2013,2014,2015,2016,2017] ' r( d% m/ G$ d* q2 B) f y_data = [58000,60200,63000,71000,84000,90500,107000]+ C6 Q/ W$ A* }2 \6 c* \$ ? ) q) t/ S6 W$ u7 u: C plt.plot(x_data,y_data)/ n+ {' X" c& s# J$ B plt.show() 4 x1 D5 i2 G! T. ?$ t7 ?
' m- n& \5 q' I2 k0 H" H( R) |
+ t. L8 y2 m7 m! B% O9 a

2)复式折线图:

( z& T Z# t! ?: O' G1 z
import matplotlib.pyplot as plt 1 |% H- N1 i* K2 m" e4 b, y: F x_data = [2011,2012,2013,2014,2015,2016,2017] m- E3 I/ V5 m* X9 q& f y_data = [58000,60200,63000,71000,84000,90500,107000]6 b0 }6 n0 x3 B! F; N' e y_data2 = [52000,54200,51500,58300,56800,59500,62700]" Q6 G' g/ f0 e" o! g 1 p; G5 w* z% l6 R6 e3 g( y! f plt.plot(x_data,y_data,color=red,linewidth=2.0,linestyle=--) 1 g+ P3 N/ ?: S Y2 e9 Q: O plt.plot(x_data,y_data2,color=blue,linewidth=3.0,linestyle=-.) _3 ]4 `6 I* |( I) @ plt.show() / j9 @3 l6 R/ W- m$ D1 `
# B" | x9 M( ?* T
$ L# w6 e8 k# R0 P

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

% t1 m' y# j9 \" p9 i' J' }
$ |# T9 f$ s) ]& V, N" }/ h( k" G6 Y

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

% j9 r# x# V; v: C
import pandas as pd% r5 |- g$ K. j import matplotlib.pyplot as plt) w, I' a" ^2 i $ X0 }$ L! W' N #读取数据/ s3 E! s x! X* O( A& F data = pd.read_excel(matplotlib.xlsx) 4 t: a. s* b7 t3 x 4 B; Z9 C( @0 Y plt.figure(figsize=(10,5))#设置画布的尺寸8 D! i. K, [ V7 z- r plt.title(Examples of line chart,fontsize=20)#标题,并设定字号大小 / i1 o: ^; @% k( v: P2 {" L# C plt.xlabel(ux-year,fontsize=14)#设置x轴,并设定字号大小 o% N _$ P! U& B, W' L# E* [ plt.ylabel(uy-income,fontsize=14)#设置y轴,并设定字号大小 5 @5 z% ~1 Q( t! m& U& R+ l* J" o4 w/ X: D7 h3 M$ z; M6 r k #color:颜色,linewidth:线宽,linestyle:线条类型,label:图例,marker:数据点的类型3 D5 N3 I, q/ Q( R: t; c in1, = plt.plot(data[时间],data[收入_Jay],color="deeppink",linewidth=2,linestyle=:, marker=o) , r* F/ n1 H$ r# ]9 t in2, = plt.plot(data[时间],data[收入_JJ],color="darkblue",linewidth=1,linestyle=--, marker=+)7 o; w' E V: J- W in3, = plt.plot(data[时间],data[收入_Jolin],color="goldenrod",linewidth=1.5,linestyle=-, marker=*): p) k. f' T5 C" [ ( n! m* M+ Q" Q7 D plt.legend(handles = [in1,in2,in3],labels=[Jay income,JJ income,Jolon income],loc=2)#图例展示位置,数字代表第几象限 2 p2 u0 P0 s# O plt.show()#显示图像# h6 O' Z* Z6 w
8 Y0 m$ r% d( h9 ~) @
# g' ~; H8 k& Y& H# `7 Y1 ~ A8 ~

4) 管理多个子图

3 U' f' T k( U7 _/ ?* j
import matplotlib.pyplot as plt- v7 V W2 n3 y7 _ import numpy as np/ p4 j% H$ A5 c3 P( y import matplotlib.gridspec as gridspec - T8 T6 a) i! x2 p" q" I import matplotlib.font_manager as fm #字体管理器 : _( o6 ]1 ]& k8 u : e3 T' j4 [+ m y* \! e my_font = fm.FontProperties(fname="/System/Library/Fonts/PingFang.ttc")1 i& V0 L4 m' X3 u3 J" ?- i ) N/ \9 `/ z. ~8 x plt.figure() . ~6 B: o. h' m7 o& c6 p8 B z* G; n: v x_data = np.linspace(-np.pi,np.pi,64,endpoint=True)) a# ]3 Y! G4 K( `* k gs = gridspec.GridSpec(2,3) #将绘图区分成两行三列* U: c- ~0 S6 S- H2 ~ ax1 = plt.subplot(gs[0,:])#指定ax1占用第一行(0)整行 5 O4 V5 g0 [: c( I. Q ax2 = plt.subplot(gs[1,0])#指定ax2占用第二行(1)的第一格(第二个参数为0)4 E. j' R. S/ I+ g5 C3 O) n ax3 = plt.subplot(gs[1,1:3])#指定ax3占用第二行(1)的第二、三格(第二个参数为1:3): E' m" p; U; b " f4 e0 b$ T8 U* Q3 Q" L" m #绘制正弦曲线) A( V) A( b8 I& g& q: L ax1.plot(x_data,np.sin(x_data)) & s1 F* r' j$ I& s# L) O' W6 R ax1.spines[right].set_color(none)" z: Z! R5 P( j; r _& T1 v( n2 V! k ax1.spines[top].set_color(none) 4 @) q: o9 \, T; ]; s ax1.spines[bottom].set_position((data,0))5 R% J F2 N. [# A0 F ax1.spines[left].set_position((data,0))/ J$ S W5 s4 A* i5 C ax1.set_title(正弦曲线,fontproperties=my_font) % W L1 p# L% r4 o6 z' q" @: J: q; `* k1 c% M6 ^ #绘制余弦曲线; l, y& m( z& x ax2.plot(x_data,np.cos(x_data)) 2 l0 B: B$ M3 s9 Z ax2.spines[right].set_color(none)5 R; v$ p1 }3 z8 I ax2.spines[top].set_color(none)% o+ B% O/ X$ v: k! F ax2.spines[bottom].set_position((data,0))% e2 v- B5 V" _) H ax2.spines[left].set_position((data,0)) 4 x* g/ t0 Z" ? ax2.set_title(余弦曲线,fontproperties=my_font) , t1 A/ d! D, F$ K4 { A - j& G# {5 a0 v5 |& u' g #绘制正切曲线' J* g7 O. _* i* s ]8 A ax3.plot(x_data,np.tan(x_data)) , C4 e9 O$ G: B H4 N ax3.spines[right].set_color(none)) K1 R0 m& ], L; @8 S" u# W0 w ax3.spines[top].set_color(none)5 H) f' |/ g" f ax3.spines[bottom].set_position((data,0))# H8 ]) S! D( p9 b6 N( z1 _* U ax3.spines[left].set_position((data,0)); T! ?) w# @+ W) X1 w) L4 v" l4 t ax3.set_title(正切曲线,fontproperties=my_font)% p9 K4 E, m9 C' c9 y plt.show()1 u3 R( R3 E% P& j$ I9 P
: V7 f7 I' k. V7 I0 U4 ?

结果:

2 ~* v S. c/ C5 N( A
4 \! c0 R/ y+ N2 S# C9 h
9 }6 _+ Y& ?3 A; ~ 7 Z7 ^5 v* ?0 Q* N4 k 8 b) Q: K ?6 z& o% m% `0 W5 v8 l+ O0 n9 {" N: U6 ^ 7 k) y! y6 J5 d. ?9 X5 J
回复

举报 使用道具

相关帖子

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