如何在Jupyter Notebook中用IPython.display加载多张图片?
嘿,这个问题我之前也碰到过!IPython/Jupyter单元格默认只会自动渲染最后一个表达式的结果,所以你两次调用Image()的时候,只有最后那只猴子会被展示出来。给你几个简单的解决办法,完全不用Matplotlib那种带轴的方式:
方法1:用display()显式输出每一张图
这是最直接的方案,先导入display函数,然后对每个Image对象主动调用它,就能强制显示每一张图片:
from IPython.display import Image, display img1 = 'images/giraffe.png' display(Image(url=img1)) img2 = 'images/monkey.png' display(Image(url=img2))
这样长颈鹿和猴子的图片就会依次显示在单元格里啦。
方法2:用HTML模块拼接图片(更灵活)
如果想调整图片的大小、排版(比如让两张图并排显示),可以用HTML模块生成自定义的图片标签,完全掌控展示样式:
from IPython.display import HTML img1_path = 'images/giraffe.png' img2_path = 'images/monkey.png' # 用HTML标签拼接,可自定义宽度、间距等样式 html_content = f""" <div style="display:flex; gap:20px; margin:10px 0;"> <img src="{img1_path}" width="250"> <img src="{img2_path}" width="250"> </div> """ HTML(html_content)
这种方式不仅能避免坐标轴问题,还能让你灵活调整图片的布局,适配不同的展示需求。
补充说明一下:你之前的写法里,每个Image()都生成了对应的图片对象,但IPython单元格只会自动展示最后一个被返回的对象,前面的Image(url=img1)生成的对象没有被主动输出,所以就看不到啦。用display()或HTML的方式,就是主动告诉IPython要把这些内容渲染出来。
内容的提问来源于stack exchange,提问作者Kbbm




