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

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

[复制链接]
. _2 v* H0 N7 e

原创:宋宋 Python专栏

! R# W8 n0 j$ [/ y9 I

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

7 G' u \7 o3 M v

折线图

, r' L. v# t r; _9 M& @

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

2 p; y/ f+ p" h/ G& n/ J: G( K

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

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

1) 简单的折线图

$ l) |. {' j, ~# W$ l7 P) l

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

6 \' y( N8 R6 `* ]6 `0 X: f5 O5 i* D

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

! k6 r. e8 w/ ]% M( b" ]1 q
import matplotlib.pyplot as plt : _& p% L+ g! j/ l. E , A4 s8 c! Z9 L8 I b; P x_data = [2011,2012,2013,2014,2015,2016,2017]) f7 t+ D7 g" A+ V y_data = [58000,60200,63000,71000,84000,90500,107000]" i. ], I) j& a' ` & H6 Q8 g! p+ ^) m. k8 G: g plt.plot(x_data,y_data)% P3 ]& X8 v) b/ M. q! e plt.show()9 g }. J7 w# j! i1 Z5 ^
* e0 R; H( T! f$ E& O m, B; {
) h1 n5 y$ V. B& @6 |+ ?4 V

2)复式折线图:

' W+ x" Q; N) a- ?7 R6 v$ f q) a& j
import matplotlib.pyplot as plt * A. h4 M' a, z! e7 L& Y3 E a x_data = [2011,2012,2013,2014,2015,2016,2017]) V1 y7 b6 w$ z5 g y_data = [58000,60200,63000,71000,84000,90500,107000] $ p$ w. u+ G2 [+ q" I# B. H- o8 { y_data2 = [52000,54200,51500,58300,56800,59500,62700] ! u, D$ F3 [$ j0 \) R 5 M7 K, z' n9 U6 t plt.plot(x_data,y_data,color=red,linewidth=2.0,linestyle=--)5 `4 Z0 }6 F. e: \6 b/ c plt.plot(x_data,y_data2,color=blue,linewidth=3.0,linestyle=-.) . F1 m$ o" \2 M- M& M" e0 [& x plt.show() . t" U/ q- m2 {0 k6 b; I
* B i; l# b( i8 u5 Q7 H( J# Q
9 e K- X3 C1 S3 t1 _& m

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

6 M" B$ O+ |3 _, Z+ h
; I& G0 u2 M. r. g

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

/ K* s5 T) m* n7 h
import pandas as pd % }& ~" G( [0 F9 x/ r import matplotlib.pyplot as plt ( `: }' T! E! a8 _! [* L+ ~9 `% |0 [% j. P7 [& W/ Y #读取数据4 m/ O q, m O3 W2 [ data = pd.read_excel(matplotlib.xlsx) 4 a4 s4 R6 f9 Y, H , F8 s: ]7 b. I4 F" b plt.figure(figsize=(10,5))#设置画布的尺寸# A! E) r" V: s5 D: x, L5 z8 I plt.title(Examples of line chart,fontsize=20)#标题,并设定字号大小5 _- Q- a) C+ ~# L2 D7 \5 N7 e plt.xlabel(ux-year,fontsize=14)#设置x轴,并设定字号大小 ; y* f3 b* v1 \* e2 _ plt.ylabel(uy-income,fontsize=14)#设置y轴,并设定字号大小+ G$ h/ b5 ^. G8 x/ H( ~1 Y, J" a 9 x$ ~; V5 p) _7 J/ e) C #color:颜色,linewidth:线宽,linestyle:线条类型,label:图例,marker:数据点的类型 & u$ Q3 j1 W5 q3 @: t, E5 N in1, = plt.plot(data[时间],data[收入_Jay],color="deeppink",linewidth=2,linestyle=:, marker=o). |( u6 J3 `& m in2, = plt.plot(data[时间],data[收入_JJ],color="darkblue",linewidth=1,linestyle=--, marker=+) 9 {$ [( a" {2 r& ^* | in3, = plt.plot(data[时间],data[收入_Jolin],color="goldenrod",linewidth=1.5,linestyle=-, marker=*); s$ X; w# D# a0 b; w' L 2 ]# p8 f0 m% Z plt.legend(handles = [in1,in2,in3],labels=[Jay income,JJ income,Jolon income],loc=2)#图例展示位置,数字代表第几象限 1 m, r: n0 H4 M3 | plt.show()#显示图像, `7 ~5 k( r/ o9 a7 K7 H
0 |8 e+ u; J4 L2 D
" }6 s8 i2 I, O9 w6 @; h( p

4) 管理多个子图

- W* p$ _# h( w
import matplotlib.pyplot as plt8 }5 q; G6 F! x: X b1 S import numpy as np3 a2 M; U$ }) H: R5 m% D import matplotlib.gridspec as gridspec$ r" t. M# n8 a: r. H import matplotlib.font_manager as fm #字体管理器( I7 `' F0 G$ l ' R4 Z; u6 h4 m9 I4 ?) { my_font = fm.FontProperties(fname="/System/Library/Fonts/PingFang.ttc") - S& _& [/ s% ^! I) ~ $ T; ?# _6 G6 u6 r: c7 c4 w/ q8 p plt.figure() 6 X9 i1 s9 L g: U: |- I7 @* \* N2 h8 L) X x_data = np.linspace(-np.pi,np.pi,64,endpoint=True)8 e0 X- ^9 ^+ `8 ]: b; m" G2 Z gs = gridspec.GridSpec(2,3) #将绘图区分成两行三列 ( d4 g: ?6 F8 F7 q& Z ax1 = plt.subplot(gs[0,:])#指定ax1占用第一行(0)整行 ' C; a+ y( ^9 ] ~0 C7 c/ F ax2 = plt.subplot(gs[1,0])#指定ax2占用第二行(1)的第一格(第二个参数为0) , j+ M6 e* N& N7 r1 F9 n; j; m ax3 = plt.subplot(gs[1,1:3])#指定ax3占用第二行(1)的第二、三格(第二个参数为1:3) z& _# J+ M* g$ Z& r* z) h 1 A( Y J* ]% X" O1 g# w #绘制正弦曲线( i; c, u) N. o; R# N+ }$ o5 U ax1.plot(x_data,np.sin(x_data))) \5 K* s' o" p1 H& g! ]: J- ~ ax1.spines[right].set_color(none) ( S0 l( ]* @7 i$ W ax1.spines[top].set_color(none) 0 Q2 G7 x$ O2 C2 F' ^8 ^' O2 ] ax1.spines[bottom].set_position((data,0)) 0 C' }! ^6 C; H1 _ U ax1.spines[left].set_position((data,0))! w4 p) H# z( X4 d8 i* { ax1.set_title(正弦曲线,fontproperties=my_font) & a8 J, p0 ~3 P8 [; a* U& {! f: P: C5 r. t4 c6 W: ~ #绘制余弦曲线! z! Q8 K7 _9 n" W+ T ax2.plot(x_data,np.cos(x_data))0 n8 d3 Z0 w. \. C" z3 {' I ax2.spines[right].set_color(none) ! z% r$ C; [: x" } r3 _ ax2.spines[top].set_color(none)) [! G, d7 V6 X' b1 Z ax2.spines[bottom].set_position((data,0)) a1 } N# ?" I, b ax2.spines[left].set_position((data,0))# d2 X3 `& K3 |; E9 g+ [ ax2.set_title(余弦曲线,fontproperties=my_font)- D9 }/ O9 y* r# B4 y ( G) d% ^, B" c0 M #绘制正切曲线8 w- W- P O' W( B ax3.plot(x_data,np.tan(x_data)) 8 U1 W; _ ~; P7 ]0 y ax3.spines[right].set_color(none)( n& {. K8 z6 z* q/ o ax3.spines[top].set_color(none)4 l4 v- ~1 o9 v6 t) q ax3.spines[bottom].set_position((data,0))3 q1 Y4 b" y( b ax3.spines[left].set_position((data,0)) - G& x7 U( F! w" Z0 c, K/ w2 t$ @ ax3.set_title(正切曲线,fontproperties=my_font) ( P& B! q' }2 P% o2 u9 m plt.show()+ ^# E. i4 d; B5 f9 ?
& ]9 |' e7 O2 B! o, n& f& s

结果:

( r, y1 V5 d- j7 Q" T' w7 a
1 S. @7 v- j. I8 a
, s* q( h" k: v! J ( M2 x' y7 j/ @3 s6 h/ Q5 j6 R( i. t( y. [# l1 h$ J: b7 n $ U' s. ]( h* {9 z( B7 b5 G2 V& {9 [% a) I1 f1 F) C1 d- t
回复

举报 使用道具

相关帖子

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