matplotlib模块-数据绘图

基础知识

Matplotlib是一个Python 2D绘图库,可以在各种平台上以各种硬拷贝格式和交互式环境生成出版质量数据。Matplotlib可用于Python脚本,Python和IPython shell,jupyter笔记本,Web应用程序服务器和四个图形用户界面工具。

matplotlib画板一般由以下部分组成

创建了subplot后, 如果发出绘图指令,matplotlib这时就会在你最后一个用过的subplot中(没有则创建)绘制.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import matplotlib.pyplot as plt
import numpy as np

# 多个figure
x = np.linspace(-1, 1, 50)
y1 = 2*x + 1
y2 = 2**x + 1

# 使用figure()函数重新申请一个figure对象
# 注意,每次调用figure的时候都会重新申请一个figure对象
plt.figure()
# 第一个是横坐标的值,第二个是纵坐标的值
plt.plot(x, y1)

# 第一个参数表示的是编号,第二个表示的是图表的长宽
plt.figure(num = 3, figsize=(8, 5))
# 当我们需要在画板中绘制两条线的时候,可以使用下面的方法:
plt.plot(x, y2)
plt.plot(x, y1,
color='red', # 线颜色
linewidth=1.0, # 线宽
linestyle='--' # 线样式
)

plt.show() # 会将所有的figure对象显示出来, 这里有2个

用matplotlib显示图片

1
2
3
4
5
6
7
8
9
10
from PIL import Image
import matplotlib.pyplot as plt # plt 用于显示图片

img = Image.open(image_file_path)

plt.figure("Image")
plt.title("title")
plt.axis("on") # 默认就是on
plt.imshow(img)
plt.show()

显示多张图片:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# plt.subplot(nrows, ncols, index, **kwargs), 行, 列, 编号, 从1开始, 直接行x列

img = cv2.imread('cat.jpg')
img = img[:, :, ::-1]

plt.subplot(2, 2, 1)
plt.title('origin')
plt.imshow(img)
plt.subplot(2, 2, 2)
plt.title('origin')
plt.imshow(img)
plt.subplot(2, 2, 3)
plt.title('origin')
plt.imshow(img)
plt.subplot(2, 2, 4)
plt.title('origin')
plt.imshow(img)

2D图表风格

散点图

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

参数说明:

  • x/y: 一维向量, 且长度相等
  • s: 标记大小, 以平方磅为单位的标记面积,指定为下列形式之一:
    • 数值标量 : 以相同的大小绘制所有标记。
    • 行或列向量 : 使每个标记具有不同的大小。x、y 和 sz 中的相应元素确定每个标记的位置和面积。sz 的长度必须等于 x 和 y 的长度。
    • [] : 使用 36 平方磅的默认面积
  • c: 标记颜色, 指定为下列形式之一:
    • RGB 三元数或颜色名称 - 使用相同的颜色绘制所有标记。
    • 由 RGB 三元数组成的三列矩阵 - 对每个标记使用不同的颜色。矩阵的每行为对应标记指定一种 RGB 三元数颜色。行数必须等于 x 和 y 的长度。
    • 向量 - 对每个标记使用不同的颜色,并以线性方式将 c 中的值映射到当前颜色图中的颜色。c 的长度必须等于 x 和 y 的长度。要更改坐标区的颜色图,请使用 colormap 函数
  • marker: 标记样式
  • linewidths: 线宽

颜色种类

样式种类

直方图 hist

1
2

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

参数说明:

  • x: 横轴对应的数据
  • bins: 指定条状图的条形个数
  • range: 横轴的范围, 默认为数据最小和最大的值作为范围
  • normed: 默认为False, 纵轴表示频数, 如果置为True, 则纵轴表示频率
  • rwidth: 条状图柱子与柱子之间的距离, 默认为0

饼状图 pie