如何并排绘制图像和图形?

How do I plot an image and a graph side by side?

我正在尝试使用 Python 中的 plt.fig() 并排绘制具有相应直方图的图像,但我没有得到所需的输出。相反,我得到 直方图 重叠在图像上。

知道为什么这种情况一直发生吗?

import pylab as plt
import matplotlib.image as mpimg
import numpy as np


img = np.uint8(mpimg.imread('motherT.png'))
im2 = np.uint8(mpimg.imread('waldo.png'))
# convert to grayscale
# do for individual channels R, G, B, A for nongrayscale images

img = np.uint8((0.2126* img[:,:,0]) + \
        np.uint8(0.7152 * img[:,:,1]) +\
             np.uint8(0.0722 * img[:,:,2]))

im2 = np.uint8((0.2126* img[:,:,0]) + \
        np.uint8(0.7152 * img[:,:,1]) +\
             np.uint8(0.0722 * img[:,:,2]))

# show old and new image
# show original image
fig = plt.figure()

plt.imshow(img)
plt.title(' image 1')
plt.set_cmap('gray')

# show original image
fig.add_subplot(221)
plt.title('histogram ')
plt.hist(img,10)
plt.show()

fig = plt.figure()
plt.imshow(im2)
plt.title(' image 2')
plt.set_cmap('gray')

fig.add_subplot(221)
plt.title('histogram')
plt.hist(im2,10)

plt.show()

您似乎对两张图片执行此操作?子图将是你最好的选择。下面向您展示如何使用它们来获得 2 x 2 效果:

import pylab as plt
import matplotlib.image as mpimg
import numpy as np


img = np.uint8(mpimg.imread('motherT.png'))
im2 = np.uint8(mpimg.imread('waldo.png'))

# convert to grayscale
# do for individual channels R, G, B, A for nongrayscale images

img = np.uint8((0.2126 * img[:,:,0]) + np.uint8(0.7152 * img[:,:,1]) + np.uint8(0.0722 * img[:,:,2]))
im2 = np.uint8((0.2126 * im2[:,:,0]) + np.uint8(0.7152 * im2[:,:,1]) + np.uint8(0.0722 * im2[:,:,2]))

# show old and new image
# show original image
fig = plt.figure()

# show original image
fig.add_subplot(221)
plt.title(' image 1')
plt.set_cmap('gray')
plt.imshow(img)

fig.add_subplot(222)
plt.title('histogram ')
plt.hist(img,10)

fig.add_subplot(223)
plt.title(' image 2')
plt.set_cmap('gray')
plt.imshow(im2)

fig.add_subplot(224)
plt.title('histogram')
plt.hist(im2,10)

plt.show() 

这会给你这样的东西:

另请注意,在您的原始代码中,im2 的灰度计算使用的是 img 而非 im2 的图像数据。

您可能想为每个图像关闭轴,为此您可以在每个 plt.imshow() 之前添加 plt.axis('off') 给您: