Как отобразить изображение из файла в Jupyter Notebook?

Я хотел бы использовать [IPython notebook][блокнот] как способ интерактивного анализа некоторых геномных диаграмм, которые я делаю с помощью модуля Biopython' GenomeDiagram. Хотя существует обширная документация о том, как использовать matplotlib для получения встроенных графиков в IPython notebook, GenomeDiagram использует инструментарий ReportLab, который, как мне кажется, не поддерживается для построения встроенных графиков в IPython.

Однако я подумал, что обойти это можно, записав график/геномную диаграмму в файл, а затем открыть изображение в режиме inline, что даст тот же результат, используя что-то вроде этого:

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

Однако я не могу понять, как это сделать - или узнать, возможно ли это. Кто-нибудь знает, можно ли открывать/отображать изображения в IPython?

Решение

Благодаря этому посту, вы можете сделать следующее:

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

(официальные документы)

Комментарии (7)

Если вы пытаетесь отобразить изображение таким образом внутри цикла, то вам необходимо обернуть конструктор Image в метод display.

from IPython.display import Image, display

listOfImageNames = ['/path/to/images/1.png',
                    '/path/to/images/2.png']

for imageName in listOfImageNames:
    display(Image(filename=imageName))
Комментарии (5)

Обратите внимание, до сих пор опубликованные решения работают только для png и jpg!

Если вы хотите сделать это еще проще без импорта дополнительных библиотек или хотите отобразить анимированный или неанимированный GIF-файл в блокноте Ipython. Преобразуйте строку, в которой вы хотите отобразить его, в markdown и используйте этот замечательный короткий хак!

![alt text](test.gif "Title")
Комментарии (1)

Это будет импортировать и отображать `.jpg изображение в Jupyter (проверено с Python 2.7 в среде Анаконда)

from IPython.display import display
from PIL import Image

path="/path/to/image.jpg"
display(Image.open(path))

Вы, возможно, потребуется установить пильном

в анаконды это делается путем ввода

conda install pillow
Комментарии (0)

Любезность это Страница, я обнаружил это, когда работал предложениями выше я'т:

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()))
Комментарии (0)

При использовании GenomeDiagram с Jupyter (оболочкой IPython), самый простой способ для отображения изображений путем преобразования GenomeDiagram в формате PNG. Это может быть завернутый с использованием оболочкой IPython.дисплей.Объект изображения, чтобы отобразить его в записной книжке.

from Bio.Graphics import GenomeDiagram
from Bio.SeqFeature import SeqFeature, FeatureLocation
from IPython.display import display, Image
gd_diagram = GenomeDiagram.Diagram("Test diagram")
gd_track_for_features = gd_diagram.new_track(1, name="Annotated Features")
gd_feature_set = gd_track_for_features.new_set()
gd_feature_set.add_feature(SeqFeature(FeatureLocation(25, 75), strand=+1))
gd_diagram.draw(format="linear", orientation="landscape", pagesize='A4',
                fragments=1, start=0, end=100)
Image(gd_diagram.write_to_string("PNG"))

[См. Блокнот]](https://gist.github.com/sbliven/bfa88fd1f4d3365f6d6170611945fa39)

Комментарии (0)

Очиститель версии Питон3, которые используют стандартные библиотеки numpy, библиотек matplotlib и PIL. Слияние ответа для открытия URL-адреса.

import matplotlib.pyplot as plt
from PIL import Image
import numpy as np

pil_im = Image.open('image.png') #Take jpg + png
## Uncomment to open from URL
#import requests
#r = requests.get('https://www.vegvesen.no/public/webkamera/kamera?id=131206')
#pil_im = Image.open(BytesIO(r.content))
im_array = np.asarray(pil_im)
plt.imshow(im_array)
plt.show()
Комментарии (0)