Как сделать одно изображение большего размера с помощью imgshow, чтобы выровнять два изображения? - PullRequest
1 голос
/ 13 января 2020

У меня есть фрагмент изображения, и я хочу, чтобы изображение слева немного увеличилось, чтобы оси выровнялись. Как я могу это сделать?

from matplotlib import pyplot as plt
import matplotlib.image as mpimg

img1 = mpimg.imread('../Reproducibility_Paper_Figures/noord_graph_image.png')
img2 = mpimg.imread('../Reproducibility_Paper_Figures/full_comparison.png')


f = plt.figure(figsize=(28.0,20.0))
f.add_subplot(1,2,1)
plt.imshow(img2,interpolation='none')
plt.axis('off')
f.add_subplot(1,2, 2)
plt.imshow(img1,interpolation='none')
plt.axis('off')
#plt.show(block=True)

f.tight_layout(pad=-5)
plt.savefig('../Reproducibility_Paper_Figures/side.png')

Изображения выглядят так:

the images

1 Ответ

0 голосов
/ 13 января 2020

Один из способов получить желаемое выравнивание - это явно установить экстенты для изображений. Экстенты будут осями данных. А затем используйте sharey=True, чтобы выровнять оба. Если оси предоставляют полезную информацию, оставьте их видимыми, иначе отключите их. В демонстрационном коде показаны все метки, чтобы помочь найти правильные значения для экстента.

from matplotlib import pyplot as plt
import matplotlib.image as mpimg

img1 = mpimg.imread('image1.png')
img2 = mpimg.imread('image2.png')

fig, (ax1, ax2) = plt.subplots(figsize=(12.0, 5.0), ncols=2, sharey=True)

ax1.imshow(img2, interpolation='bilinear', extent=[0, 120, -21, 360], aspect=1/4)
# ax1.axis('off')
ax1.tick_params(labeltop=True, labelbottom=True, labelright=True, labelleft=True,
                top=True, bottom=True, right=True, left=True)
ax1.yaxis.set_major_locator(plt.MultipleLocator(20))
ax2.imshow(img1, interpolation='bilinear', extent=[0, 120, -37.5, 361], aspect=1/4)
ax2.axis('on')
ax2.tick_params(labeltop=True, labelbottom=True, labelright=True, labelleft=True,
                top=True, bottom=True, right=True, left=True)
# ax2.axis('off')
# plt.savefig('../Reproducibility_Paper_Figures/side.png')
plt.show()

resulting images

PS: если вы хотите использовать savefig и show вместе, убедитесь, что savefig вызывается первым. plt.show сотрет изображение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...