如何让两个子图具有相同的高度?

时间:2018-02-16 00:40:10

标签: python matplotlib figure subplot

我需要将灰度图像及其直方图添加到图形中。 两个子图应该是相同的大小,但直方图显示为图像的两倍高。如何使两个子图具有相同的高度?

这是我的代码:

import numpy as np
from skimage import io
import matplotlib.pyplot as plt

L = 256
img = io.imread('https://i.stack.imgur.com/ywPGr.png')
edges = np.arange(L+1)
hist, _ = np.histogram(img, bins=edges)
centers = edges[:-1]

fig, [ax1, ax2] = plt.subplots(1, 2)
ax1.imshow(img, cmap=plt.cm.gray)
ax1.axis('off')
ax2.fill_between(centers, hist)
fig.tight_layout()
plt.show(fig)

Image and histogram

我已经尝试了this similar question接受的答案中提出的解决方案,但这些解决方案都不适用于我。

在图像上使用自动宽高比会改变其宽高比(这是不可接受的):

ax1.imshow(img, cmap=plt.cm.gray, aspect='auto')

First workaround

添加这两行不会产生所需的结果:

asp = np.diff(ax2.get_xlim())[0] / np.diff(ax2.get_ylim())[0]
ax2.set_aspect(asp)

Second workaround

0 个答案:

没有答案