Matplotlib-对齐网格

时间:2019-09-22 04:32:22

标签: python matplotlib

我正在使用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()

当我们选择正确的图形尺寸时,图像将按照如下所示正确对齐

image ok

但是,如果未正确选择图形尺寸,则直方图显示对于图像尺寸而言太大或太远,如下图所示

misalignment 1

misalignment 2

有什么方法可以告诉matplotlib正确对齐,也就是说,将直方图放置在图像下方一定数量的像素上,并且永远不要拉伸大于图像宽度的直方图。

0 个答案:

没有答案