2016-06-16 1 views
1

У меня есть 2-мерная матрица, скажем img, которую я хочу сохранить как на изображении, используя цветную карту 'hot'. Следующий кодКак добавить цветную картинку к изображению, сохранив его?

import matplotlib.pyplot as plt 

plt.imsave("out.jpg", img, cmap = 'hot') 

позволяет мне это сделать. Тем не менее, я хочу сохранить цветную панель вместе с изображением, для меня важно знать, какое значение для каждого пикселя было, грубо. Предположим, что у меня есть много свободного места справа.

Я знаю, что это может быть сделано в «легком» пути, создавая фигуру с помощью plt.imshow(), добавив Colorbar с помощью plt.colorbar(), а затем сохранить его с помощью plt.savefig(), но также сохраняет «серую зону» вокруг фигуры и цветная панель отображается отдельно. Кроме того, это имеет проблемы с размером фигуры в случае масштабирования. Я хочу, чтобы цветная панель отображалась на изображении, а результирующее выходное изображение было того же размера, что и матрица.

Кроме того, если у кого-то есть другие предложения относительно визуализации матрицы как изображения (где значения не ограничены), они будут оценены.

ответ

2

Я не уверен, как добавить цветной барабан к своему изображению, прежде чем вы его сохраните, как хотите, и я даже не уверен, что это возможно. Но я могу предоставить вам способ построить изображение, добавить цветную панель и сохранить ее, но отформатировать ее так, как вы хотите. Попробуйте что-то вроде следующего

import matplotlib.pyplot as plt 

fig = plt.figure(figsize = (W,H)) # Your image (W)idth and (H)eight in inches 
# Stretch image to full figure, removing "grey region" 
plt.subplots_adjust(left = 0, right = 1, top = 1, bottom = 0) 
im = plt.imshow('out.jpg') # Show the image 
pos = fig.add_axes([0.93,0.1,0.02,0.35]) # Set colorbar position in fig 
fig.colorbar(im, cax=pos) # Create the colorbar 
plt.savefig('out.jpg') 

Я не могу гарантировать, что это будет работать, не имея возможности протестировать его, но она должна быть в правильном направлении для того, что вы хотите.