我想用IPython笔记本电脑来交互式分析我用Biopython的基因组图模块制作的一些基因组图。虽然有大量关于如何使用matplotlib在IPython笔记本中获得内联图形的文档,但GenomeDiagram使用ReportLab工具包,我认为IPython不支持该工具包。

然而,我在想,一种解决这个问题的方法是将绘图/基因组图写入一个文件,然后内联打开图像,结果会是这样的:

gd_diagram.write("test.png", "PNG")
display(file="test.png")

然而,我不知道如何做到这一点,也不知道这是否可行。那么有人知道IPython中是否可以打开/显示图像吗?


当前回答

通过这篇文章,你可以做到以下几点:

from IPython.display import Image
Image(filename='test.png') 

(官方文档)

其他回答

多亏了这个页面,我发现当上面的建议不起作用时,这个方法是有效的:

import PIL.Image
from cStringIO import StringIO
import IPython.display
import numpy as np
def showarray(a, fmt='png'):
    a = np.uint8(a)
    f = StringIO()
    PIL.Image.fromarray(a).save(f, fmt)
    IPython.display.display(IPython.display.Image(data=f.getvalue()))

你可以在markdown部分使用html代码: 例子:

 <img src="https://www.tensorflow.org/images/colab_logo_32px.png" />

另一个选择是:

from matplotlib import pyplot as plt 
from io import BytesIO
from PIL import Image
import Ipython

f = BytesIO()
plt.savefig(f, format='png')
Ipython.display.display(Ipython.display.Image(data=f.getvalue()))
f.close()

如果您希望将映像从本地主机嵌入到ipython笔记本中,您可以执行以下操作:

首先:找到当前本地路径:

# show current directory
import os
cwd = os.getcwd()
cwd

例如,结果将是:

'C:\\Users\\lenovo\\Tutorials'

接下来,像下面这样嵌入你的图像:

from IPython.display import display
from PIL import Image

path="C:\\Users\\lenovo\\Tutorials\\Data_Science\\DS images\\your_image.jpeg"
display(Image.open(path))

确保您在jpg、jpeg或png中选择了正确的图像类型。

from IPython.display import Image

Image(filename =r'C:\user\path')

我见过一些解决方案,有些不会工作,因为原始目录,当添加像上面这样的代码时,只记得在目录前添加'r'。这应该可以避免这种错误:(unicode error)'unicodeescape'编解码器无法解码位置2-3中的字节:截断的\UXXXXXXXX转义