Я хотел бы использовать [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')
Если вы пытаетесь отобразить изображение таким образом внутри цикла, то вам необходимо обернуть конструктор 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))
Обратите внимание, до сих пор опубликованные решения работают только для png и jpg!
Если вы хотите сделать это еще проще без импорта дополнительных библиотек или хотите отобразить анимированный или неанимированный GIF-файл в блокноте Ipython. Преобразуйте строку, в которой вы хотите отобразить его, в markdown и используйте этот замечательный короткий хак!

Это будет импортировать и отображать `.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
Любезность это Страница, я обнаружил это, когда работал предложениями выше я'т:
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()))
При использовании 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)
Очиститель версии Питон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()