Matplotlib是Python的绘图模块,他与Numpy,Pandas等配合使用,类似于MATLAB 的绘图工具
Matplotlib是一个基础工具,后面所介绍的seanborn等都是基于这个模块实现

有很多方法,可以直接参考官网
官网:https://matplotlib.org/index.html(https://matplotlib.org/index.html) 

案例:https://matplotlib.org/gallery/index.html

1 matplotlib基本介绍

1.1 模块导入(测试)

1.2 魔法函数(%matplotlib inline)

%matplotlib inline作用:

iPython 中定义的魔法函数(Magic Function),将matplotlib绘制的图显示在页面里中; 

如果不加这句话需要调用:plt.show()

1.3 matplotlib图表(画布)

认识画布,axis,axes

画布:图表大小,进行图表绘制 
axes:坐标系,一个画布中可以指定多个坐标系 
axis:坐标轴,每个坐标系都有一个坐标轴 

2 matplotlib基本使用

2.1 参数

绘制折线图【更多参数可以查看说明文档】: 
plt.plot(*args, scalex=True, scaley=True, data=None, **kwargs) 

plt.plot() 是 Matplotlib 最核心的绘图函数,用于绘制折线图、散点图(带点样式)等

*args

样式字符串速查表(fmt)
格式:[颜色][线型][标记],可自由组合

scalex=True, scaley=True

缩放参数:scalex, scaley
控制是否自动缩放坐标轴,默认都是 True。
scalex=True:自动适配 x 轴范围
scaley=True:自动适配 y 轴范围

data=None

数据参数:data

简化绘图:直接传入数据集(DataFrame / 字典),用列名当 x/y。

不用重复写 df['x'],代码更简洁。

**kwargs

样式关键字参数:**kwargs
用键值对精细设置线条 / 点样式,比 fmt 更强大
常用参数清单:

示例:

2.1.1 折线图常用方式

单列绘图

双列绘图

用data配置数据

2.2 格式配置

2.2.1 图表配置及文档查看

文档查看

方式1: pyplot子模块文档地址:https://matplotlib.org/api/pyplot_summary.html (https://matplotlib.org/api/pyplot_summary.html) 
在页面中找到plot方法,点击进入plot方法的介绍
方式2:直接查看(help)

2.2.2 通过fmt设置颜色

fmt格式:'-or'分别代表:线型,点形状,颜色,顺序可以颠倒

①设置线型

②点设置

③颜色设置

更多新详细说明参考:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.plot.html 

2.3 xy轴设置

坐标轴设置包括: 
坐标轴值,坐标轴显示值,坐标轴标签

示例:

2.3.1 字体设置

字体设置包括大小,字体,颜色,旋转角度

参考链接:https://matplotlib.org/api/text_api.html (https://matplotlib.org/api/text_api.html)

可以直接看官方说明plt.xticks?,因为版本不同可能参数也不用

2.4 title与图例

2.4.1 title/图例设置

2.4.1.1 设置标题(plt.title

plt.title(label, fontdict=None, loc='center', pad=None, **kwargs)

参数 作用 常用值
label 标题文字(必须写) '******分布图'
fontdict 统一设置字体样式 字体、大小、颜色
loc 标题位置 center(居中)/ left / right
pad 标题与图表顶部距离 数字(越大越远)
kwargs 精细样式 color、fontsize、fontweight 等

2.4.1.2 设置图例(plt.legend

plt.legend(*args, **kwargs)

例如一个图表中可以绘制多个折线,每个折线代表说明可以使用legend标识


详细参数可以查看说明与帮助文档

示例:

都是空的

在plt.plot中增加label

多个图例

2.4.1.3 显示字体为中文(plt.rcParams

The list of rcParams is:
- _internal.classic_mode
- agg.path.chunksize
- animation.bitrate
- animation.codec
- animation.convert_args
- animation.convert_path
- animation.embed_limit
- animation.ffmpeg_args
- animation.ffmpeg_path
- animation.frame_format
- animation.html
- animation.writer
- axes.autolimit_mode
- axes.axisbelow
- axes.edgecolor
- axes.facecolor
- axes.formatter.limits
- axes.formatter.min_exponent
- axes.formatter.offset_threshold
- axes.formatter.use_locale
- axes.formatter.use_mathtext
- axes.formatter.useoffset
- axes.grid
- axes.grid.axis
- axes.grid.which
- axes.labelcolor
- axes.labelpad
- axes.labelsize
- axes.labelweight
- axes.linewidth
- axes.prop_cycle
- axes.spines.bottom
- axes.spines.left
- axes.spines.right
- axes.spines.top
- axes.titlecolor
- axes.titlelocation
- axes.titlepad
- axes.titlesize
- axes.titleweight
- axes.titley
- axes.unicode_minus
- axes.xmargin
- axes.ymargin
- axes.zmargin
- axes3d.automargin
- axes3d.grid
- axes3d.mouserotationstyle
- axes3d.trackballborder
- axes3d.trackballsize
- axes3d.xaxis.panecolor
- axes3d.yaxis.panecolor
- axes3d.zaxis.panecolor
- backend
- backend_fallback
- boxplot.bootstrap
- boxplot.boxprops.color
- boxplot.boxprops.linestyle
- boxplot.boxprops.linewidth
- boxplot.capprops.color
- boxplot.capprops.linestyle
- boxplot.capprops.linewidth
- boxplot.flierprops.color
- boxplot.flierprops.linestyle
- boxplot.flierprops.linewidth
- boxplot.flierprops.marker
- boxplot.flierprops.markeredgecolor
- boxplot.flierprops.markeredgewidth
- boxplot.flierprops.markerfacecolor
- boxplot.flierprops.markersize
- boxplot.meanline
- boxplot.meanprops.color
- boxplot.meanprops.linestyle
- boxplot.meanprops.linewidth
- boxplot.meanprops.marker
- boxplot.meanprops.markeredgecolor
- boxplot.meanprops.markerfacecolor
- boxplot.meanprops.markersize
- boxplot.medianprops.color
- boxplot.medianprops.linestyle
- boxplot.medianprops.linewidth
- boxplot.notch
- boxplot.patchartist
- boxplot.showbox
- boxplot.showcaps
- boxplot.showfliers
- boxplot.showmeans
- boxplot.vertical
- boxplot.whiskerprops.color
- boxplot.whiskerprops.linestyle
- boxplot.whiskerprops.linewidth
- boxplot.whiskers
- contour.algorithm
- contour.corner_mask
- contour.linewidth
- contour.negative_linestyle
- date.autoformatter.day
- date.autoformatter.hour
- date.autoformatter.microsecond
- date.autoformatter.minute
- date.autoformatter.month
- date.autoformatter.second
- date.autoformatter.year
- date.converter
- date.epoch
- date.interval_multiples
- docstring.hardcopy
- errorbar.capsize
- figure.autolayout
- figure.constrained_layout.h_pad
- figure.constrained_layout.hspace
- figure.constrained_layout.use
- figure.constrained_layout.w_pad
- figure.constrained_layout.wspace
- figure.dpi
- figure.edgecolor
- figure.facecolor
- figure.figsize
- figure.frameon
- figure.hooks
- figure.labelsize
- figure.labelweight
- figure.max_open_warning
- figure.raise_window
- figure.subplot.bottom
- figure.subplot.hspace
- figure.subplot.left
- figure.subplot.right
- figure.subplot.top
- figure.subplot.wspace
- figure.titlesize
- figure.titleweight
- font.cursive
- font.family
- font.fantasy
- font.monospace
- font.sans-serif
- font.serif
- font.size
- font.stretch
- font.style
- font.variant
- font.weight
- grid.alpha
- grid.color
- grid.linestyle
- grid.linewidth
- hatch.color
- hatch.linewidth
- hist.bins
- image.aspect
- image.cmap
- image.composite_image
- image.interpolation
- image.interpolation_stage
- image.lut
- image.origin
- image.resample
- interactive
- keymap.back
- keymap.copy
- keymap.forward
- keymap.fullscreen
- keymap.grid
- keymap.grid_minor
- keymap.help
- keymap.home
- keymap.pan
- keymap.quit
- keymap.quit_all
- keymap.save
- keymap.xscale
- keymap.yscale
- keymap.zoom
- legend.borderaxespad
- legend.borderpad
- legend.columnspacing
- legend.edgecolor
- legend.facecolor
- legend.fancybox
- legend.fontsize
- legend.framealpha
- legend.frameon
- legend.handleheight
- legend.handlelength
- legend.handletextpad
- legend.labelcolor
- legend.labelspacing
- legend.loc
- legend.markerscale
- legend.numpoints
- legend.scatterpoints
- legend.shadow
- legend.title_fontsize
- lines.antialiased
- lines.color
- lines.dash_capstyle
- lines.dash_joinstyle
- lines.dashdot_pattern
- lines.dashed_pattern
- lines.dotted_pattern
- lines.linestyle
- lines.linewidth
- lines.marker
- lines.markeredgecolor
- lines.markeredgewidth
- lines.markerfacecolor
- lines.markersize
- lines.scale_dashes
- lines.solid_capstyle
- lines.solid_joinstyle
- macosx.window_mode
- markers.fillstyle
- mathtext.bf
- mathtext.bfit
- mathtext.cal
- mathtext.default
- mathtext.fallback
- mathtext.fontset
- mathtext.it
- mathtext.rm
- mathtext.sf
- mathtext.tt
- patch.antialiased
- patch.edgecolor
- patch.facecolor
- patch.force_edgecolor
- patch.linewidth
- path.effects
- path.simplify
- path.simplify_threshold
- path.sketch
- path.snap
- pcolor.shading
- pcolormesh.snap
- pdf.compression
- pdf.fonttype
- pdf.inheritcolor
- pdf.use14corefonts
- pgf.preamble
- pgf.rcfonts
- pgf.texsystem
- polaraxes.grid
- ps.distiller.res
- ps.fonttype
- ps.papersize
- ps.useafm
- ps.usedistiller
- savefig.bbox
- savefig.directory
- savefig.dpi
- savefig.edgecolor
- savefig.facecolor
- savefig.format
- savefig.orientation
- savefig.pad_inches
- savefig.transparent
- scatter.edgecolors
- scatter.marker
- svg.fonttype
- svg.hashsalt
- svg.id
- svg.image_inline
- text.antialiased
- text.color
- text.hinting
- text.hinting_factor
- text.kerning_factor
- text.latex.preamble
- text.parse_math
- text.usetex
- timezone
- tk.window_focus
- toolbar
- webagg.address
- webagg.open_in_browser
- webagg.port
- webagg.port_retries
- xaxis.labellocation
- xtick.alignment
- xtick.bottom
- xtick.color
- xtick.direction
- xtick.labelbottom
- xtick.labelcolor
- xtick.labelsize
- xtick.labeltop
- xtick.major.bottom
- xtick.major.pad
- xtick.major.size
- xtick.major.top
- xtick.major.width
- xtick.minor.bottom
- xtick.minor.ndivs
- xtick.minor.pad
- xtick.minor.size
- xtick.minor.top
- xtick.minor.visible
- xtick.minor.width
- xtick.top
- yaxis.labellocation
- ytick.alignment
- ytick.color
- ytick.direction
- ytick.labelcolor
- ytick.labelleft
- ytick.labelright
- ytick.labelsize
- ytick.left
- ytick.major.left
- ytick.major.pad
- ytick.major.right
- ytick.major.size
- ytick.major.width
- ytick.minor.left
- ytick.minor.ndivs
- ytick.minor.pad
- ytick.minor.right
- ytick.minor.size
- ytick.minor.visible
- ytick.minor.width
- ytick.right

中文设置示例

2.5 子图(在一个画布中绘制多个子图)

2.5.1 创建子图(plt.subplot

添加多个图表方式可以使用子图及多图 
plt.subplot(*args, **kwargs):返回axes 

plt.subplot(行数, 列数, 第几个子图)

写法:

注意:

  • 数字顺序:行 → 列 → 第几个
  • 子图编号从 1 开始,不是 0
  • 每个子图都是独立的,可以单独画、加标题、颜色

示例:有行有列选择哪一个,然后再进行绘制

一个一个创建

内容添加:

 循环绘制

多行多列并进行不用的设置

axes代表不同的坐标系,对应每个坐标系

批量创建

2.6 创建画布(plt.figure

注意子图与画布的区别,子图是在一张画布中绘制的,而画布是可以设置多个

子图:一张图中有几个小图

画布:有几张整图

plt.figure(num=None,figsize=None,dpi=None,facecolor=None,edgecolor=None,frameon=True,...clear=False,**kwargs)

创建、激活一张画布的函数,所有画图内容都画在这张 “画布” 上

【⭐】

参数 类型 作用说明 常用取值 / 示例
num int / str / Figure / None 画布唯一标识;已有则激活,无则新建;字符串可设窗口标题 1"遥感时序图"
figsize (float, float) 画布尺寸,单位英寸,(宽,高) (8,5)(10,6)
dpi float 画布分辨率,每英寸像素点数,越大越清晰 100150200
facecolor 颜色值 画布背景色 'white''#f5f5f5'
edgecolor 颜色值 画布边框颜色 'black''gray'
frameon bool 是否显示画布外边框 True(默认)、False
clear bool 若画布已存在,是否清空原有内容 True 清空、False 保留
layout str / None 自动布局引擎,防止坐标轴 / 标题重叠 'constrained''tight''none'
FigureClass 指定自定义画布类,一般不用改 默认即可

示例:

设置坐标系

2.7 设置坐标轴

默认坐标系为00,有时候我们希望坐标轴中心点在其他位置,且只希望显示x,y两个轴

直接使用套代码模板即可:

2.7.1 matlab方法设置

2.7.2 mpl的方法设置

3 matplotlib常用的图表【⭐】

3.1 折线图(plt.plot())

趋势变化关系,场合时间等结合起来使用
例如:新增用户,累计用户,股票数据等;
案例:近一周某用户粉丝每天增长量与累积粉丝数:

3.2 散点图(plt.scatter())

显示若干数据系列中各数值之间的关系,一定程度反映数据分布关系
适用于维度较少数据
方法:plt.scatter(x, y, s=None, c=None,marker=None,...,alpha=None,**kwargs)

3.3柱状图(plt.bar())/条形图(plt.barh())

显示一段时间内的数据变化或显示各项之间的比较情况
例如:数据对比
相关方法:

柱状图 
bar(x, height, *, align='center', **kwargs) 
bar(x, height, width, *, align='center', **kwargs) 
bar(x, height, width, bottom, *, align='center', **kwargs) 


条形图: 
plt.barh(*args, **kwargs)

3.4饼状图(plt.pie())

总体数据中,各项与总和的比例
各个数据对比,例如:不同地区销售额占比;
plt.pie(x, explode=None, labels=None...)

3.5 直方图(plt.hist())

数据分布情况
plt.hist(
    x, 
    bins=None, 
    range=None, 
    density=None, 
    weights=None, 
    cumulative=False, 
    bottom=None, 
    histtype='bar', 
    align='mid', 
    orientation='vertical', 
    rwidth=None, 
    color=None, 
    edgecolor=None, 
    label=None, 
    stacked=False, 
    alpha=None
)

参数 含义 用法 / 常用取值
x 输入待统计的一维数据 列表、numpy 数组、多组数据可传 [x1,x2]
bins 分组柱数 / 自定义区间 整数:柱子数量;列表:手动指定分段边界
range 限定统计的数据范围 元组 (min, max),只统计区间内数据
density 是否转为概率密度 False(默认):频数;True:概率密度,积分面积为 1
weights 给每个数据设置权重 同 x 长度的权重数组,按权重累加而非计数
cumulative 是否画累积直方图 True 累积求和;False 普通频次
bottom 柱子底部起始高度 数值 / 数组,用于整体抬高柱子或多层堆叠
histtype 直方图样式 bar默认柱状;step空心轮廓;stepfilled填充轮廓
align 柱子刻度对齐方式 mid居中;left左对齐;right右对齐
orientation 直方图摆放方向 vertical竖直;horizontal水平横向
rwidth 柱子相对宽度 0~1 之间,小于 1 柱间留空隙
color 柱子填充颜色 颜色名、十六进制颜色
edgecolor 柱子边框颜色 blackgraynone无边框
alpha 透明度 0~1,数值越小越透明
label 图例标签文字 字符串,配合 plt.legend() 显示
stacked 多组数据是否堆叠 True堆叠;False并列展示

3.6 箱型图(plt.boxplot())

箱形图可以很直观的描述数据的最大值、最小值、中位数、上四分位数、下四分位数、异常值


plt.boxplot(x, notch=None, sym=None, vert=None, whis=None)

plt.boxplot(x, notch=None, sym=None, vert=None, whis=None,
            positions=None, widths=None, patch_artist=None,
            bootstrap=None, usermedians=None, conf_intervals=None,
            meanline=None, showmeans=None, showcaps=None,
            showbox=None, showfliers=None, boxprops=None,
            whiskerprops=None, capprops=None, flierprops=None,
            medianprops=None, meanprops=None)

参数 中文含义 作用说明 & 常用取值
x 输入数据 一维数组 / 多组二维数据,每组画一个箱线
notch 凹口箱体 True:中间带凹口(中位数置信区间)False:标准矩形箱体(默认)
sym 异常值标记样式 设置离群点形状 + 颜色,例:'ro'红点、'k*'黑星号
vert 箱体方向 True:竖直箱线(默认)False:水平箱线
whis 须线阈值倍数 默认 1.5;须线范围 = Q1/Q3 ± 1.5×IQR超出即判定为异常值
positions 箱体横坐标位置 自定义每个箱线在 x 轴的位置,默认依次 1,2,3…
widths 箱体宽度 0~1 数值,控制箱子粗细
patch_artist 允许填充箱体 True:可给箱体填颜色False:仅线条,不能填充(默认)
bootstrap 凹口置信区间抽样数 配合 notch=True,设置 bootstrap 抽样次数
usermedians 自定义中位数 手动传入每组数据的中位数,不用自动计算
conf_intervals 自定义置信区间 手动指定凹口上下置信区间
meanline 均值以线条显示 True:用横线表示均值False:用点表示均值
showmeans 是否显示均值 True:画出均值标记False:不显示
showcaps 是否显示须线端点横线 True:显示上下短横线(默认)False:隐藏
showbox 是否显示箱体边框 True:显示箱体(默认)False:只画须线和异常点
showfliers 是否显示异常离群点 True:显示异常点(默认)False:隐藏所有离群值
boxprops 箱体属性字典 设置箱体颜色、线宽、填充,例:dict(color='blue')
whiskerprops 须线属性字典 设置须线颜色、线型、粗细
capprops 须线端点横线属性 设置上下盖帽横线样式
flierprops 异常点属性字典 单独设置离群点大小、颜色、形状
medianprops 中位数线属性 设置中位数线颜色、粗细、线型
meanprops 均值标记属性 设置均值点 / 均值线样式

示例:

更多推荐