-
-
Save soply/f3eec2e79c165e39c9d540e916142ae1 to your computer and use it in GitHub Desktop.
import matplotlib.pyplot as plt | |
import numpy as np | |
def show_images(images, cols = 1, titles = None): | |
"""Display a list of images in a single figure with matplotlib. | |
Parameters | |
--------- | |
images: List of np.arrays compatible with plt.imshow. | |
cols (Default = 1): Number of columns in figure (number of rows is | |
set to np.ceil(n_images/float(cols))). | |
titles: List of titles corresponding to each image. Must have | |
the same length as titles. | |
""" | |
assert((titles is None)or (len(images) == len(titles))) | |
n_images = len(images) | |
if titles is None: titles = ['Image (%d)' % i for i in range(1,n_images + 1)] | |
fig = plt.figure() | |
for n, (image, title) in enumerate(zip(images, titles)): | |
a = fig.add_subplot(cols, np.ceil(n_images/float(cols)), n + 1) | |
if image.ndim == 2: | |
plt.gray() | |
plt.imshow(image) | |
a.set_title(title) | |
fig.set_size_inches(np.array(fig.get_size_inches()) * n_images) | |
plt.show() |
@soply Thanks!
@shang-vikas scaling is good! Thanks!
assert((titles is None)or (len(images) == len(titles)))
AssertionError
smart tool
Cool!
Thanks a lot
Great utility. Thanks man!
Good stuff, thanks!
Good job, but please note that columns and rows are swapped in add_subplot.
The correct usage should be:
a = fig.add_subplot(np.ceil(n_images/float(cols)), cols, n + 1)
Thanks sir !!
Good job, thanks
Thanks.
Thanks for sharing, good stuff!
@soply Thank you dude
this code doesn't give any error but also it doesn't show any output. so what i do?
when i run this code nothing to show any output
Thanks a lot!
Thanks, this really helped a lot!
Was trying to figure out how to do this elegantly in a function. Thanks a lot for posting this!
Thanks a lot!
Thanks!
Was looking to implement this myself, you saved me a lot of minutes. Thank you very much!
Thanks! matplotlib should implement this :)
Great!
Great work!!
Thank you so much!
It was useful, thank you!
If you're getting the following error like me:
ValueError: Number of rows must be a positive integer
You can fix it by casting the row number to int:
a = fig.add_subplot(int(np.ceil(n_images / float(cols))), cols, n + 1)
Also swapped the args order, number of rows should come first.
How to save the multiple-image figure as a new image?
worked like a charm. Added an additional parameter to control the scaling.
line 27 : instead of n_images , i used n_images/scale. scale of 4 works fine. users can tweak