-
-
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() |
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
@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?
Thank you for this. Works out of the box!