I want to show images var_1.png,...,var_40.png
in a 2x3 matrix format inside a Jupyter Notebook.
However, I only manage to do it manually:
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
%matplotlib inline
img1=mpimg.imread('Variable_8.png')
img2=mpimg.imread('Variable_17.png')
img3=mpimg.imread('Variable_18.png')
...
fig, ((ax1, ax2, ax3), (ax4,ax5,ax6)) = plt.subplots(2, 3, sharex=True, sharey=True)
ax1.imshow(img1)
ax1.axis('off')
ax2.imshow(img2)
ax2.axis('off')
....
I want something cleaner. Something like a list comprehension that specifies
image=[img(i)=mpimg.imread('Variable_(i).png') for i in [8,17,28, ..]
[ax[j].imshow(img(j)),ax[j].axis('off') for j in range(len(image))]
Some help?
List comprehensions quickly become unreadable if there is more than one thing they do. Also it appears it is considered bad style to use list comprehensions if the content of the list is not actually used at all.
Hence I would propose the following
import matplotlib.pyplot as plt
images = [plt.imread(f"Variable_{i}.png") for i in [8,17,28,29,31,35]]
fig, axes = plt.subplots(2, 3, sharex=True, sharey=True)
for img, ax in zip(images, axes.flat):
ax.imshow(img)
ax.axis('off')