I have a figure in a grayscale. I would like to know how to add a color bar in such imported figure, using Python. I know how to plot a 2D array and add a color bar, but I can not figure out how to do a similar task for an imported figure. I also would like to preserve the size of the original image. I import the figure with
from PIL import Image
im= Image.open("gray.png")
Thanks in advance.
`
from mpl_toolkits.axes_grid1 import make_axes_locatable
import matplotlib.pyplot as plt
def display_image_in_actual_size(im_path):
dpi = 80
im_data = plt.imread(im_path)
height, width, depth = im_data.shape
# What size does the figure need to be in inches to fit the image?
figsize = width / float(dpi), height / float(dpi)
# Create a figure of the right size with one axes that takes up the full figure
fig = plt.figure(figsize=figsize)
ax = fig.add_axes([0, 0, 1, 1])
#ax.axis('off') # uncommenting this will result a plot without axis !
# configures size of colorbar
divider = make_axes_locatable(ax)
im=plt.imshow(im_data)
cax = divider.append_axes("right", size="5%", pad=0.05)
plt.colorbar(im, cax=cax)
ax.imshow(im_data, cmap='gray')
ax.set(xlim=[-10, width - 0.5], ylim=[height - 0.5, -0.5], aspect=1)
plt.savefig('last_image.png') #saving new image
plt.show()
display_image_in_actual_size("gray.png")
I have adapted some portions of answer from here