Je voudrais utiliser un cahier IPython pour analyser de manière interactive certaines cartes génomiques que je crée avec le GenomeDiagram
module de Biopython . Bien qu'il existe une documentation complète sur la façon d'utiliser matplotlib
pour obtenir des graphiques en ligne dans le bloc-notes IPython, GenomeDiagram utilise la boîte à outils ReportLab qui, je ne pense pas, est prise en charge pour la création de graphiques en ligne dans IPython.
Je pensais, cependant, qu'une façon de contourner ce problème serait d'écrire le diagramme intrigue / génome dans un fichier, puis d'ouvrir l'image en ligne, ce qui aurait le même résultat avec quelque chose comme ceci:
gd_diagram.write("test.png", "PNG")
display(file="test.png")
Cependant, je ne peux pas comprendre comment faire cela - ou savoir si c'est possible. Alors, est-ce que quelqu'un sait si les images peuvent être ouvertes / affichées dans IPython?
from IPython.display import Image
devrait fonctionner depuis la 0.13.from IPython.core.display import Image, display
<b />display(Image(filename='test.png'))
jupyter nbconvert mynotebook.ipynb --to slides --post serve
), le chemin de l'image doit commencer par de/
sorte qu'il s'agisse d'un chemin absolu depuis la racine Web, c'est![alt text](/test.jpg "Some Title")
Si vous essayez d'afficher une image de cette manière dans une boucle, vous devez encapsuler le constructeur Image dans une méthode d'affichage.
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))
la source
Notez que jusqu'à présent, les solutions publiées ne fonctionnent que pour png et jpg!
Si vous le souhaitez encore plus facilement sans importer d'autres bibliothèques ou si vous souhaitez afficher un fichier GIF animé ou non animé dans votre bloc-notes Ipython. Transformez la ligne où vous souhaitez l'afficher en démarque et utilisez ce joli petit hack!
![alt text](test.gif "Title")
la source
Cela importera et affichera une
.jpg
image dans Jupyter (testé avec Python 2.7 dans l'environnement Anaconda)from IPython.display import display from PIL import Image path="/path/to/image.jpg" display(Image.open(path))
Vous devrez peut-être installer PIL
dans Anaconda, cela se fait en tapant
la source
Avec la permission de cette page, j'ai trouvé que cela fonctionnait alors que les suggestions ci-dessus ne le faisaient pas:
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()))
la source
Vous pouvez utiliser du code html dans la section markdown: exemple:
<img src="https://www.tensorflow.org/images/colab_logo_32px.png" />
la source
Si vous souhaitez afficher efficacement un grand nombre d'images, je recommande d'utiliser le package IPyPlot
import ipyplot ipyplot.plot_images(images_array, max_images=20, img_width=150)
Il existe d'autres fonctions utiles dans ce package où vous pouvez afficher des images dans des onglets interactifs (onglet séparé pour chaque étiquette / classe), ce qui est très utile pour toutes les tâches de classification ML.
la source
Une version plus propre de Python3 qui utilise numpy, matplotlib et PIL standard. Fusion de la réponse pour l'ouverture à partir de l'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()
la source
from IPython.display import Image Image(filename =r'C:\user\path')
J'ai vu des solutions et certaines ne fonctionneront pas à cause du répertoire brut, lorsque vous ajoutez des codes comme celui ci-dessus, n'oubliez pas d'ajouter «r» avant le répertoire. cela devrait éviter ce genre d'erreur: (erreur unicode) le codec 'unicodeescape' ne peut pas décoder les octets en position 2-3: échappement \ UXXXXXXXX tronqué
la source
Lors de l'utilisation
GenomeDiagram
avec Jupyter (iPython), le moyen le plus simple d'afficher des images consiste à convertir le GenomeDiagram en une image PNG. Cela peut être encapsulé à l'aide d'un objet IPython.display.Image pour l'afficher dans le bloc-notes.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"))
[Voir le carnet]
la source
Une autre option pour tracer en ligne à partir d'un tableau d'images pourrait être:
import IPython def showimg(a): IPython.display.display(PIL.Image.fromarray(a))
où a est un tableau
a.shape (720, 1280, 3)
la source