matplotlib常用API

目录

一、绘图基本流程

二、创建画布

三、绘制图像

1.matplotlib.pyplot.plot

 2.matplotlib.pyplot.scatter

 3.matplotlib.pyplot.hist

 4.matplotlib.pyplot.pie

四、图像展示

1.matplotlib.pyplot.legend

 2.matplotlib.pyplot.subplots

3. matplotlib.pyplot.grid

4.matplotlib.pyplot.show

五、保存图像

matplotlib.pyplot.savefig


一、绘图基本流程

  • 创建画布
  • 绘制图像
  • 图像保存(可选)
  • 显示图像

绘图基本流程是先创建画布,再绘制图像,如果需要则保存图片(必须在显示图片的前面保存),再显示图片 

二、创建画布

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

figure 函数可以创建多个画布,但是每次只有一个画布被激活,这个被激活的画布才可以被设置属性和展示,返回一个 figure 对象。

参数分析:

 num :int 或 string 或 Figure 或 SubFigure,可选参数,是 figure( ) 返回对象的唯一标识。每次调用 pyplot.figure( ) 都会创建或激活一个新的画布,而 num 则相当于给每一个画布一个名字。如果不加 num 参数直接调用 figure( ) 会创建或激活一个 num 为默认值的画布,如果带上 num 参数会创建或激活一个有标识符的的画布。num 参数使得一个程序可以创建多个图像,如果要使用标识符为 id 的图窗只需在 plot 之前调用 figure( num = id ) 即可激活该画布

 <示例>

# 创建一个标识符为1的画布
fig1 = matplotlib.pyplot.figure(num=1)
# 创建一个默认画布
fig2 = matplotlib.pyplot.figure()
# 激活num=1的画布(方法一)
matplotlib.pyplot.figure(num=1)
# 激活num=1的画布(方法二)
matplotlib.pyplot.figure(num=fig1)
# 激活默认画布
matplotlib.pyplot.figure()

figsize :元组(float, float),画布大小参数,默认值为(6.4,4.8),可以自行调整大小

<示例>

# 设置figsize为(20,8)
matplotlib.pyplot.figure(figsize=(20,8))

dpi:float, 像素,默认值为100,和figure一起决定图像的大小

<示例>

# 设置figsize为(20,8),像素为50
matplotlib.pyplot.figure(figsize=(20,8),dpi=50)

facecolor:color, 背景颜色,默认为白色

<示例>

# 设置背景颜色为gray
matplotlib.pyplot.figure(facecolor='gray')

 edgecolor: color,边界颜色,默认为白色

<示例>

# 设置边界颜色为red
matplotlib.pyplot.figure(edgecolor='red')

 frameon: bool,绘制图形框架开关,默认为True, 绘制图形框架,区别在于是否看地到背景颜色

<示例>

frameon = True 的情况:

matplotlib常用API_第1张图片

frameon = False 的情况:

matplotlib常用API_第2张图片

FigureClass:subclass of Figure, 如果设置将创建该子类的一个实例,而不是一个普通Figure。

clear:bool, 清除开关,默认为False, 如果 True 并且图形已存在,则将其清除。

layout: 布局方式可选{'constrained', 'compressed', 'tight', 'none', LayoutEngine, None}, 默认为none, 用于调整复杂的图像,防止元素重叠。

  • constrained:约束布局解算器调整轴大小以避免轴装饰重叠。可以处理复杂的绘图布局和颜色条,因此推荐使用。
  • compressed:使用与“约束”相同的算法,但删除固定纵横比轴之间的额外空间。最适合简单的轴网格。
  • tight:使用紧密布局机制。这是一个相对简单的算法,可调整子图参数以使装饰不重叠。
  • none:不使用布局管理。

注:使用布局会减慢图像绘制

三、绘制图像

1.matplotlib.pyplot.plot

plot 可以在图窗上画出点,再把点连接形成图像

调用模板:

plot([x], y, [fmt], *, data=None, **kwargs)
plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)

[x],[fmt] 等带有方括号的参数为可选参数

常用参数:

[x]: 列表,表示横坐标,如果 x 参数不填,y 坐标依次和 0 , 1 , 2 , 3 ... 对应

y: 列表,表示纵坐标,依次和 x 下标为 0 , 1 , 2 , 3 ... 的数对应

[fmt]: 字符串表示图例,格式为 ' [color][marker][line] ' ,color 代表图例的颜色,maker 代表对应点的样式,line 代表点与点之间连线的样式,具体参数参考下表,如果不设置[fmt]参数则图例为实线

[label]: 字符串,给所作的图线添加标签,如果在一张图中绘制多条图线,调用 legend() 显示图例时将会显示该标签,如果不设置label参数则不会显示该图线的图例

[linewidth]: int ,决定画线的粗细,默认为2 

<示例>

import matplotlib.pyplot as plt

# 创建画布
fig = plt.figure(num=1)
# 绘制图像
plt.plot( [1,2,3,4,5,6,7],[1,2,1.4,3.7,5,2.6,9],'ro-',label='line 1', linewidth=2)
plt.plot( [1,2,3,4,5,6,7],[2,4,2,5,6,7,13],'k.-',label='line 2', linewidth=2)
# 显示图像
plt.legend(title="Example")
plt.show()

matplotlib常用API_第3张图片

  • color 参数解析

character

color

 b

蓝色

 g

绿色

 r

红色

 c

绿蓝色

 m

品红色

 y

黄色

 k

黑色

 w

白色

  •  maker 参数解析

character

description

.

,

逗号

o

实心圆点

v

倒三角

^

正三角

<

左三角

>

右三角

1

向下无边三角

2

向上无边三角

3

向左无边三角

4

向右无边三角

8

八边形

s

正方形

p

五边形

P

加粗加号

*

h

实心六边形

H

实心六边形

+

加号

x

x

X

加粗x

D

填充菱形

d

窄菱形

|

竖线

_

横线

  • line 参数解析

character

description

-

实线

--

虚线

-.

点划线

:

点线

 2.matplotlib.pyplot.scatter

scatter 可以在图中画出散点,但是不会连接

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None,vmin=None, vmax=None, alpha=None, 
        linewidths=None, *, edgecolors=None,plotnonfinite=False, data=None, **kwargs)

常用参数:

x: 列表,表示横坐标

y: 列表,表示纵坐标

[s]: float 或 列表,可以调整每个散点的大小

[c]: 列表,调整每一个点的颜色

[maker]: 点的样式,参考 plot 的 makker 参数,默认为 'o',画圆点图

[alpha]: 透明度,默认为1不透明,范围在 0~1,值越小越透明

<示例>

import matplotlib.pyplot as plt

# 创建画布
fig = plt.figure(num=1)
# 绘制图像
plt.scatter( [1,2,3,4,5,6,7],[1,2,1.4,3.7,5,2.6,7],s=[36,54,36,72,36,90,60],
                    c=['r','g','b','c','y','k','m'],marker='^',alpha=0.5)
# 显示图像
plt.show()

matplotlib常用API_第4张图片

 3.matplotlib.pyplot.hist

hist 可以在图中画出直方图,统计出每个区间的数据个数并将该个数作为每个直方的高度

matplotlib.pyplot.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, 
                       bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None,
                                    log=False, color=None, label=None, stacked=False, *, data=None, **kwargs)

 参数分析:

x: 列表(可为二维数组),要统计的数据

bins: int 或 列表,默认为10,如果为 int ,表示在 (x.min( ), x.max( )) 中分为 bins 个直方,如果为列表,例如 [ 0 ,1 , 3, 6, 7] 则表示统计 0~1,1~3,3~6,6~7 上的数据个数并显示。

range: 元组,用于限制统计范围,当且仅当 bins 为列表时起作用,例如 range = (0.1,0.6) ,此时将统计 0.1~0.6 范围的数据

density:bool,默认为False, 控制 y 轴是数量还是频率,density = True 时显示频率并且返回频率列表,density = False 时显示数量

weights: 列表,权重数组,要求和 x 数组大小一致,与 x 的数据相对应,weights[i] 决定 x[i] 的权重

cumulative:bool,默认为 False ,决定是否从左往右依次累加 y 值

histtype:{'bar', 'barstacked', 'step', 'stepfilled'},默认为 'bar',决定直方图的样式

align:{'left', 'mid', 'right'}, 默认为: 'mid',决定 bar 的对其方式

orientation{'vertical', 'horizontal'},默认为 'vertical' ,决定图是水平还是垂直

rwidth: float ,决定 bar 的宽度,如果 histtype 为 'step' 和 'stepfilled',不起作用

log: bool ,决定 y 轴是否取对数,用于处理 y 轴数据比较大的情况

color: 决定 bar 的颜色,参数参考 plot 的 color 参数

label: string ,给图例设置标签,如果 x 为二维数组,label 只会显示 x 的第一行数据的图例 

stacked: bool,默认为 False,决定是否显示分层直方,只有当 x 为二维数组才可看到效果。当 x 为二维数组时,将 stacked 设为 True 可显示分层直方图。

<示例>

import matplotlib.pyplot as plt

# 创建画布
fig = plt.figure()
# 绘制图像
plt.hist([[1,1,1,1,1,1,2,2,3,3,4,4,5,5,5,6],[1,1,1,1,1,1,2,4,2,3,3,3,5,5,5,6]],
      bins=10,weights=[[0.2,0.3,0.5,1.3,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.1,3], 
 [1.2,0.7,0.9,1.6,1.5,0.8,0.9,01.1,0.4,0.6,0.7,0.2,2.1,0.5,0.1,3]],rwidth=0.9,stacked=True,label='hist')
plt.legend()
# 显示图像
plt.show()

 matplotlib常用API_第5张图片

 4.matplotlib.pyplot.pie

绘制饼图

matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, 
  labeldistance=1.1, startangle=0, radius=1, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), 
                 frame=False, rotatelabels=False, *, normalize=True, hatch=None, data=None)

常用参数:

 x:一维数组,表示饼图中各个数据的大小

explode:一维数组,和 x 相对应,决定各个楔块的顶点与圆点的偏移量

labels:列表,与 x 的数对应,给每个楔块添加标签

colors:一维数组,与 x 对应,决定每个楔块的颜色

hatch:维数组,与 x 对应,决定每个锲块的填充样式,如,'**o' , 'oO', 'o.o', '.||.'

autopct: string 类型,设置每个锲块的百分数类型,例如 '%.2f%%'

shadow:bool,默认为 False,决定饼图是否有阴影

radius:float, 默认为 1,决定饼图的半径

<示例>

import matplotlib.pyplot as plt

# 创建画布
fig = plt.figure()
# 绘制图像
plt.pie([1,3,5,8,9],[0.15,0.05,0.05,0.05,0.05],labels=['dogs','cats','pigs','ducks','tigers'],
                       autopct="%.2f%%",shadow=True,radius=1.3,hatch=['o.o','.||.','o','oO','*'])
# 显示图像
plt.show()

matplotlib常用API_第6张图片

四、图像展示

1.matplotlib.pyplot.legend

在轴上放置一个图例

matplotlib.pyplot.legend(*args, **kwargs)

常用参数:

title:string ,默认为None,图例的标题

fontsize:int {'xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large'},图例的字体大小

title_fontsize:int 或 {'xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large'},默认为 None,图例标题的字体大小

labelcolor:string 或 list,默认为 None,图例文本的颜色

alignment:{'center', 'left', 'right'},默认为  'center ',图例标题和条目框的对齐方式。这些条目作为一个块对齐,以便标记始终对齐。

loc:string一对浮点数,默认为 best,图例的显示位置

Location String

Location Code

'best' (Axes only)

0

'upper right'

1

'upper left'

2

'lower left'

3

'lower right'

4

'right'

5

'center left'

6

'center right'

7

'lower center'

8

'upper center'

9

'center'

10

<示例>

import matplotlib.pyplot as plt

# 创建画布
fig = plt.figure(num=1)
# 绘制图像
plt.plot( [1,2,3,4,5,6,7],[3,4,6.4,7,5,9.4,9],'ro-',label='line 1', linewidth=2)
plt.plot( [1,2,3,4,5,6,7],[8,7,9,8,10,11,13],'k.-',label='line 2', linewidth=2)
# 显示图像
plt.legend(title="Example",loc='lower right',alignment='left',labelcolor='green',fontsize='large',title_fontsize='large')
plt.show()

matplotlib常用API_第7张图片

 2.matplotlib.pyplot.subplots

画多张图

matplotlib.pyplot.subplots(nrows=1, ncols=1, *, sharex=False, sharey=False, squeeze=True, width_ratios=None, height_ratios=None, subplot_kw=None, gridspec_kw=None, **fig_kw)

常用参数:

nrows, ncols:int,默认为 1,表示子窗口的行数和列数

返回值:

figure 对象和 axs 数组,axs 相当于 figure对象,和之前的绘图方式一样

<例如>

import matplotlib.pyplot as plt

# 创建画布
fig ,axs= plt.subplots(1,2)
# 绘制图像
axs[0].plot( [1,2,3,4,5,6,7],[3,4,6.4,7,5,9.4,9],'ro-',label='line 1', linewidth=2)
axs[1].plot( [1,2,3,4,5,6,7],[8,7,9,8,10,11,13],'k.-',label='line 2', linewidth=2)
# 显示图像

plt.show()

matplotlib常用API_第8张图片

3. matplotlib.pyplot.grid

 在图中显示网格

matplotlib.pyplot.grid(visible=None, which='major', axis='both', **kwargs)

参数解析:

visible: bool ,决定是否显示网格,如果 visible = False 默认显示网格

which: {'major', 'minor', 'both'},决定显示网格线的类型

axis: {'both', 'x', 'y'}, 决定显示哪条轴的线

linestyle: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...},网格线样式

color: string ,网格线颜色

alpha: int ,网格线透明度

<示例>

import matplotlib.pyplot as plt

# 创建画布
fig = plt.figure()
# 绘制图像
plt.plot([3,5,6,4,2,7,5,8])
# 显示图像
plt.grid(True,axis='x',linestyle='--',alpha=0.5)
plt.show()

matplotlib常用API_第9张图片

4.matplotlib.pyplot.show

显示图像

matplotlib.pyplot.show(*, block=None)

五、保存图像

matplotlib.pyplot.savefig

注意:保存图片要在 show 前保存

savefig(fname, *, dpi='figure', format=None, metadata=None,
        bbox_inches=None, pad_inches=0.1,
        facecolor='auto', edgecolor='auto',
        backend=None, **kwargs
       )

参数解析:

fname:string,文件名或文件全路径

dpi:float or 'figure',默认为 figure,决定图片的像素

format:文件保存格式,可为 'jpg' ,'png'  等等

<示例>

import matplotlib.pyplot as plt

# 创建画布
plt.figure()
# 绘制图像
plt.plot( [1,2,3,4,5,6,7],[3,4,6.4,7,5,9.4,9],'ro-',label='line 1', linewidth=2)
plt.plot( [1,2,3,4,5,6,7],[8,7,9,8,10,11,13],'k.-',label='line 2', linewidth=2)
# 显示图像
plt.legend()
plt.grid(axis='x',which="major")

plt.savefig("test.png",dpi=100)
plt.show()

你可能感兴趣的:(机器学习实践,matplotlib,python,开发语言)