Python中使用matplotlib绘制灰度直方图

灰度直方图在数据统计分析、图像处理中有着比较广泛的应用,下面就介绍一下如何在Python中使用matplotlib来绘制灰度直方图。

下面直接看代码:

import matplotlib.pyplot as plt
import numpy as np

random_state = np.random.RandomState(19680801)
X = random_state.randn(10000)

fig, ax = plt.subplots()
ax.hist(X, bins=25, normed=True, color = 'yellow')
x = np.linspace(-5, 5, 1000)
ax.plot(x, 1 / np.sqrt(2*np.pi) * np.exp(-(x**2)/2), linewidth=4)
plt.show()

代码解读:

首先是使用random类生成数目为10000的伪随机数,接着使用pyplot模块中的subplots接口创建一个绘制对象,使用hist()成员函数开始绘制灰度直方图,第一个参数是随机数序列,bins指定直方的个数,normed指定是否进行归一化,而color指定直方图的颜色。

出现警告提示:

/home/linuxidc/.local/lib/python3.6/site-packages/matplotlib/axes/_axes.py:6521: MatplotlibDeprecationWarning:
The 'normed' kwarg was deprecated in Matplotlib 2.1 and will be removed in 3.1. Use 'density' instead.
  alternative="'density'", removal="3.1")

意思就是把:normed 换成 density  即可解决问题

下面绘制的一个高斯函数曲线是为了证明这个伪随机序列是符合高斯正态分布的。

绘制结果如下:

Python中使用matplotlib绘制灰度直方图