簡體   English   中英

如何使用matplotlib在另一個圖像上顯示兩個圖像?

[英]How to display two images on top of another with matplotlib?

我有一個包含一些值的熱圖( model_prediction_i )。 因為我想稍后在繪制之前旋轉這個熱圖,所以我必須用plt.imsave保存它。 我的目標是,將reference.jpg顯示為繪圖的背景,在其上繪制X_test_i ,然后將熱圖也放置在該圖上,這樣我就可以看到背景、繪制的線和熱圖,后者更小尺寸比背景圖片 -> 它只會遮擋背景圖片的一部分。 作為reference.jpg 在此處輸入圖片說明 這可能嗎?

import numpy as np
from PIL import Image
import matplotlib.pyplot as plt

model_prediction_i = np.zeros((200,200))
model_prediction_i[160][160] = 1
model_prediction_i[160][161] = 1
model_prediction_i[160][162] = 1
model_prediction_i[160][163] = 1
model_prediction_i[160][164] = 1
model_prediction_i[160][165] = 1
model_prediction_i[160][166] = 1
model_prediction_i[160][167] = 1
model_prediction_i[160][168] = 1
model_prediction_i[160][169] = 1
model_prediction_i[160][170] = 1
model_prediction_i[160][171] = 1

plt.imsave('outfile.jpg', model_prediction_i, cmap='hot')
rotated_img = Image.open('outfile.jpg')
background = Image.open('reference.jpg')


X_test_i = np.zeros((5, 2))
X_test_i[0] = [10 ,10]
X_test_i[1] = [60 ,60]
X_test_i[2] = [90 ,90]
X_test_i[3] = [140 ,140]
X_test_i[4] = [250 ,230]

fig, ax = plt.subplots(figsize=(10, 10))
ax.plot(X_test_i[:, 0], X_test_i[:, 1], marker='o', markersize=7, color="red", label='Current position', antialiased=True)


ax.imshow(rotated_img, cmap='hot', extent=[X_test_i[:, 0][-1]-10, X_test_i[:, 0][-1]+10, X_test_i[:, 1][-1]-10, X_test_i[:, 1][-1]+10])
ax.imshow(background)
plt.show()

你可以在同一個單元格中用plt.imshow疊加兩個圖像來繪制它們。

from matplotlib import pyplot as plt

plt.figure(figsize = (10,10))
plt.imshow(img_1)
plt.imshow(img_2, alpha=0.5)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM