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

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

[复制链接]
/ `0 {! p) P/ U

原创:宋宋 Python专栏

. g! c8 E# p! m) w; a4 a

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

: d4 Z5 h" L+ U+ ?4 r

折线图

% K* ? j* Z3 A3 }, Q

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

. T2 `9 o/ ^) o

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

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

1) 简单的折线图

1 l* P, d( B u! }

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

+ q5 y# q) M+ J% w- q

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

% @6 G! ` s- T- d
import matplotlib.pyplot as plt* j( A" ]" r; R6 ] " `. d; P! L& F1 C x_data = [2011,2012,2013,2014,2015,2016,2017]1 B# @) @( J4 M% {. U! X- [9 Q# ?7 m y_data = [58000,60200,63000,71000,84000,90500,107000] - P6 b2 q U5 a1 Z - O0 h9 o4 c) I3 @ plt.plot(x_data,y_data) " A* {- ^- [; T. a4 ]: p plt.show() 5 R) T* n& G6 d: z
3 h! [2 b$ }' u: m& t' z8 T9 s. ] h$ ?# M9 {
& Y; _4 T% T" S* l: a$ ]) l

2)复式折线图:

+ r S4 J* k$ D, x
import matplotlib.pyplot as plt + p) l' W8 L4 n1 B/ Q x_data = [2011,2012,2013,2014,2015,2016,2017] $ m6 Q# B a% M# e) f1 F3 O y_data = [58000,60200,63000,71000,84000,90500,107000] " I F, R3 L$ G y_data2 = [52000,54200,51500,58300,56800,59500,62700]9 p) ]$ J5 T# z, w ( F. z$ m% p& t( s plt.plot(x_data,y_data,color=red,linewidth=2.0,linestyle=--) 5 C4 s' B0 h; W3 \' j: Q plt.plot(x_data,y_data2,color=blue,linewidth=3.0,linestyle=-.) 9 ~+ Z. F/ u. A! Z6 e plt.show() 2 g7 ?. ~5 t; P) E3 O6 u. w; `
# A' }0 m3 L3 _" `. y
9 ? m# H r! 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 是指标记点,有如下的:

3 g4 i4 s% t1 M$ w! {3 S. L
v/ S; i; D3 ^7 a, U$ `" v' g

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

- x* _5 P. l% a& o( s# }( Q% T7 C
import pandas as pd; p0 ?6 Y) Y+ [0 k9 j( |- K% e import matplotlib.pyplot as plt' j2 U) X# k& Z" |( K- d " f. }8 M/ d# x% J #读取数据 7 V- q( U. j! @8 m( R# W& V data = pd.read_excel(matplotlib.xlsx)( j9 A7 I- `) g& q: v i 2 n& P4 s% v$ w8 J: h" B3 e+ B; L3 m plt.figure(figsize=(10,5))#设置画布的尺寸 9 { |/ H+ P" j* K plt.title(Examples of line chart,fontsize=20)#标题,并设定字号大小+ b H$ @$ X+ W3 ~# U plt.xlabel(ux-year,fontsize=14)#设置x轴,并设定字号大小 9 C; {4 V8 j* h7 g plt.ylabel(uy-income,fontsize=14)#设置y轴,并设定字号大小. s2 T$ m& u& P5 @2 s% q! N/ |; C $ H! R" I9 q/ Y7 }0 f2 N& j& ? #color:颜色,linewidth:线宽,linestyle:线条类型,label:图例,marker:数据点的类型! \, f9 q1 J, r in1, = plt.plot(data[时间],data[收入_Jay],color="deeppink",linewidth=2,linestyle=:, marker=o) $ i2 Y" z( c2 x$ B+ T in2, = plt.plot(data[时间],data[收入_JJ],color="darkblue",linewidth=1,linestyle=--, marker=+) 7 |3 {6 t9 r- o% \* H in3, = plt.plot(data[时间],data[收入_Jolin],color="goldenrod",linewidth=1.5,linestyle=-, marker=*)% c }' N: l# q# u # ` [0 ?% e/ Z9 m9 Y5 c plt.legend(handles = [in1,in2,in3],labels=[Jay income,JJ income,Jolon income],loc=2)#图例展示位置,数字代表第几象限: S* D" k8 Q w) p/ L l, p$ p plt.show()#显示图像8 l- h' J! |/ n
& d8 m0 @" U$ K* \/ t: v: ]9 @
4 ]* E6 u( K+ g% t/ _

4) 管理多个子图

O3 a$ h% y: T# C" f) u' A# w! s* A
import matplotlib.pyplot as plt / |+ {6 _) J5 F" |$ M$ g# v+ ` import numpy as np & w5 b% |) @. h' | import matplotlib.gridspec as gridspec5 i: A2 d4 \* T import matplotlib.font_manager as fm #字体管理器' ^2 m% B& b) w: b1 j, M # r# G$ ]3 y7 R* b% G9 y* @ my_font = fm.FontProperties(fname="/System/Library/Fonts/PingFang.ttc") * O: ^4 F: ^( p& o( j8 C ( J* u$ c& Z# l6 \& K plt.figure() ; m+ t' v* `9 S, J* t) \; Y) g8 e2 [7 c6 D3 T) F. I x_data = np.linspace(-np.pi,np.pi,64,endpoint=True)" e8 ]. Z5 G/ G) x i gs = gridspec.GridSpec(2,3) #将绘图区分成两行三列 0 e) j( j9 i7 K ax1 = plt.subplot(gs[0,:])#指定ax1占用第一行(0)整行 # u v) }; z1 o# k1 J ax2 = plt.subplot(gs[1,0])#指定ax2占用第二行(1)的第一格(第二个参数为0) C# L) p" {/ p5 p% Z ax3 = plt.subplot(gs[1,1:3])#指定ax3占用第二行(1)的第二、三格(第二个参数为1:3) ! X. g; b8 C; @: Q" _/ g( n! A% H8 t #绘制正弦曲线 4 ^/ @7 f" n4 i+ W; p0 O9 Q ax1.plot(x_data,np.sin(x_data))8 |: b( B8 }/ p1 m4 y v- G& @. x ax1.spines[right].set_color(none) ) M6 j# \4 h/ s; ~" L ax1.spines[top].set_color(none) 8 S$ g0 v4 K" G9 g# t( o ax1.spines[bottom].set_position((data,0)) ! O r" ^9 G: F3 g7 `9 a0 o ax1.spines[left].set_position((data,0)) . A3 w/ B6 R& q6 \! ]; X ax1.set_title(正弦曲线,fontproperties=my_font)( H3 s% N4 V' j 9 b8 _+ I) c5 }0 G% P: Q$ a #绘制余弦曲线 6 }& ~4 [6 { M5 R ax2.plot(x_data,np.cos(x_data)) 7 w( X. p! Q: s7 e, E# F* i- N ax2.spines[right].set_color(none)/ F8 n0 r# X3 `& d ax2.spines[top].set_color(none) 6 j/ i, S0 d) M& V8 P ax2.spines[bottom].set_position((data,0)) 4 o. T5 W! s1 M' z$ x. O8 @6 [+ { ax2.spines[left].set_position((data,0)) 6 J/ P. f8 f# K f) Y# {) H ax2.set_title(余弦曲线,fontproperties=my_font) ! [, w2 O) Z9 ~; N$ o7 K % S. y9 y$ h, X, P# e* O4 E/ S #绘制正切曲线 * ?1 x+ _9 O3 \$ o4 C% G- b/ S ax3.plot(x_data,np.tan(x_data))9 N g/ i) A f9 f+ B( ~2 Y+ M ax3.spines[right].set_color(none) ( V- F6 ]: L; W ax3.spines[top].set_color(none) 9 y3 ^8 }) D! I- U5 _ G' ? ax3.spines[bottom].set_position((data,0)) 8 x* _) t* u: f4 Z: h ax3.spines[left].set_position((data,0))4 Q# ^) z) H& X! c+ c9 x ax3.set_title(正切曲线,fontproperties=my_font); H. @9 o- X1 A2 } plt.show() 7 Y3 D: n5 j( B! t3 [
6 c3 E& ~( h: I! k

结果:

$ {$ n/ a+ W1 \, i
9 S$ ~2 I& J/ _2 u& K
^. p$ ~3 r5 a$ Z 4 @' `0 Z' ^0 K% Y" |) R j3 H: a0 u1 e$ z 6 q2 K& H% I+ B( E & c+ b3 l w) B4 ]! T9 R
回复

举报 使用道具

相关帖子

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