python 不调用函数画直方图
时间: 2023-05-20 09:07:03 浏览: 40
可以使用 matplotlib 库中的 hist 函数来画直方图,不需要定义函数。以下是一个简单的例子:
import matplotlib.pyplot as plt
data = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5]
plt.hist(data)
plt.show()
这段代码会生成一个包含数据 data 的直方图。
相关问题
如何不调用函数,如何用python较为底层地写直方图均衡化
不调用函数的直方图均衡化实现需要对图像的每个像素进行操作。下面是使用Python代码实现直方图均衡化的方法:
```python
import cv2
import numpy as np
# 加载图像
img = cv2.imread('test.jpg', cv2.IMREAD_GRAYSCALE)
# 获取图像的行数和列数
rows, cols = img.shape[:2]
# 统计图像中每个像素值出现的次数
hist = np.zeros(256, dtype=int)
for i in range(rows):
for j in range(cols):
hist[img[i, j]] += 1
# 计算累计分布函数
cdf = np.zeros(256, dtype=float)
cdf[0] = hist[0] / (rows * cols)
for i in range(1, 256):
cdf[i] = cdf[i-1] + hist[i] / (rows * cols)
# 映射像素值
output = np.zeros_like(img)
for i in range(rows):
for j in range(cols):
output[i, j] = int(255 * cdf[img[i, j]])
# 显示原图和直方图均衡化后的图像
cv2.imshow('Original Image', img)
cv2.imshow('Histogram Equalization', output)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上面的代码中,我们首先加载一张灰度图像。然后,我们获取图像的行数和列数,并统计图像中每个像素值出现的次数。接着,我们计算累计分布函数,并将每个像素值映射到0-255的范围内。最后,我们创建一个和输入图像相同大小的输出图像,并将每个像素值映射到新图像中。最后,我们使用OpenCV的`imshow`函数显示原图和直方图均衡化后的图像。
python多个属性绘制直方图
可以使用 Python 的 Matplotlib 库来绘制直方图。下面是一个示例代码,可以绘制多个属性的直方图:
```python
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
data = np.random.randn(1000, 3)
# 绘制直方图
fig, axs = plt.subplots(1, 3, figsize=(10, 5), sharey=True)
axs[0].hist(data[:, 0], bins=30)
axs[0].set_title('Attribute 1')
axs[1].hist(data[:, 1], bins=30)
axs[1].set_title('Attribute 2')
axs[2].hist(data[:, 2], bins=30)
axs[2].set_title('Attribute 3')
plt.show()
```
这段代码中,首先使用 numpy 库生成了一个 1000 行 3 列的随机数矩阵,表示了三个属性的数据。然后,使用 plt.subplots() 函数创建了一个大小为 1x3 的子图,即三个子图排列在一行中。接着,对每个子图使用 hist() 函数绘制了对应属性的直方图,并设置了标题。最后,调用 plt.show() 函数显示绘制的图形。
你可以根据自己的需求修改代码中的数据和参数,以便绘制符合自己需求的直方图。