我正在使用Matplotlib.GridSpec
在图像下方绘制直方图,如下面的代码所示:
import imageio
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import gridspec
plt.close('all')
plt.style.use('ggplot')
img = imageio.imread('imageio:page.png')
y = np.bincount(img.ravel(), minlength=256)
y = y/np.sum(y)
x = np.arange(len(y))
fig = plt.figure(figsize=(6,8))
gs = gridspec.GridSpec(2, 1, height_ratios=[6,1], width_ratios=[1])
ax0 = plt.subplot(gs[0])
ax0.imshow(img, cmap='gray')
ax0.xaxis.set_visible(False)
ax0.yaxis.set_visible(False)
ax1 = plt.subplot(gs[1])
ax1.fill_between(x, y)
ax1.yaxis.set_visible(False)
ax1.set_xlim([0,255])
fig.tight_layout()
plt.show()
当我们选择正确的图形尺寸时,图像将按照如下所示正确对齐
但是,如果未正确选择图形尺寸,则直方图显示对于图像尺寸而言太大或太远,如下图所示
或
有什么方法可以告诉matplotlib正确对齐,也就是说,将直方图放置在图像下方一定数量的像素上,并且永远不要拉伸大于图像宽度的直方图。