如何并排绘制图像和图形?
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')
给您:
我正在尝试使用 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')
给您: