Sortie de cellule riche avec Jupyter Notebook (IPython)

Utilisez-vous SymPy, tout le monde? Lorsque vous utilisez SymPy avec Jupyter Notebook, la formule de sortie est magnifiquement mise en forme et affichée. image.png Quelque chose comme ça. Savez-vous comment créer un objet capable de produire une sortie aussi riche?

Il a été écrit dans la documentation IPython. Ceci peut être réalisé en implémentant une méthode nommée sous la forme _repr_ * _. Ce qui s'applique à ce «*» est

il y a. Je pense que SymPy est probablement implémenté dans LaTeX, mais cette fois, utilisons un SVG facile à comprendre.

Face() + Eye(35, 40) + Eye(65, 40) + Mouth(50, 75)

image.png

La mise en œuvre est la suivante.

class Component():
    def __init__(self, items = None):
        self.items = items or [self]
    def __add__(self, target):
        return Component(self.items + target.items)
    def _repr_svg_(self):
        return ''.join([
            '<svg width="100" height="100">',
            *map(str, self.items),
            '</svg>'
        ])
    
class Face(Component):
    def __str__(self):
        return '<circle cx="50" cy="50" r="45" fill="none" stroke="black" stroke-width="1" />'

class Eye(Component):
    def __init__(self, x, y):
        super().__init__()
        self.x, self.y = x, y
    def __str__(self):
        return f'<circle cx="{self.x}" cy="{self.y}" r="5" fill="black" />'

class Mouth(Component):
    def __init__(self, x, y):
        super().__init__()
        self.x, self.y = x, y
    def __str__(self):
        return f'<path d="M{self.x} {self.y} l15 -5 h-30 Z" fill="none" stroke="black" stroke-width="1" />'

Recommended Posts

Sortie de cellule riche avec Jupyter Notebook (IPython)
Jouer avec Jupyter Notebook (IPython Notebook)
Utilisation d'Apache Spark avec le notebook Jupyter (notebook IPython)
Comment déboguer avec Jupyter ou iPython Notebook
Dessin graphique avec jupyter (notebook ipython) + matplotlib + vagrant
Calcul parallèle avec le notebook iPython
Utilisation de Graphviz avec Jupyter Notebook
Utiliser pip avec Jupyter Notebook
Pour générer une valeur au milieu d'une cellule avec Jupyter Notebook
Approvisionnement EC2 avec Vagrant + Jupyter (IPython Notebook) sur Docker
Utiliser Cython avec Jupyter Notebook
Dessin graphique avec IPython Notebook
Utilisation de Bokeh avec IPython Notebook
Autoriser les connexions externes avec le notebook Jupyter
La vie de recherche et développement avec le notebook iPython
Formatage avec autopep8 sur le notebook Jupyter
Visualisez l'arbre de décision avec le notebook Jupyter
Faites un son avec le notebook Jupyter
Ajouter plus de noyaux avec Jupyter Notebook
Créer un environnement de notebook IPython avec boot2docker
Analyse pratique avec Pandas + notebook Jupyter
Utiliser nbextensions avec le notebook Jupyter d'Anaconda
Utiliser Jupyter Lab et Jupyter Notebook avec EC2
Essayez SVM avec scikit-learn sur Jupyter Notebook
Comment utiliser le notebook Jupyter avec ABCI
Lier Python et JavaScript avec le notebook Jupyter
Présentation HTML "EN DIRECT" avec IPython 3.0.0-dev, IPython Notebook
[Mémo Jupyter Notebook] Afficher les kanji avec matplotlib
Mémo Jupyter Notebook
Présentation de Jupyter Notebook
Construire un environnement d'analyse avec Docker (jupyter notebook + PostgreSQL)
Analyse des données pour améliorer POG 2 ~ Analyse avec le notebook jupyter ~
Vérifiez la précision du NLC avec le bloc-notes Jupyter de Watson Studio
Puissant ordinateur portable Jupyter
Activer Jupyter Notebook avec conda sur un serveur distant
Mémo Jupyter Notebook
installation du notebook ipython
Recommandations du notebook IPython
Création d'un environnement R avec Jupyter (anciennement notebook IPython) (sous OS X El Capitan 10.11.3)
Créer une table avec le notebook IPython
Construction d'environnement virtuel avec Docker + Flask (Python) + notebook Jupyter
Machine learning facile avec AutoAI (partie 4) Jupyter Notebook
Surveiller le modèle d'entraînement avec TensorBord sur Jupyter Notebook
Construction d'un environnement d'analyse de données avec Python (notebook IPython + Pandas)
Importer des cellules spécifiques à partir d'autres blocs-notes avec le bloc-notes Jupyter
Sélection multiple avec Jupyter
Bougies avec plotly + Jupyter
Démarrer Jupyter Notebook
Sortie PDF avec Django
Sortie Markdown avec Django
Sortie PDF avec WeasyPrint
Jupyter arrive avec une grande dynamique, alors soyez prêt pour vous (IPython Notebook + R)
Démarrez IPython avec virtualenv
Créer des diapositives avec iPython
Connecter à distance un notebook IPython
Raccourci de déplacement de cellule Jupyter
Utilisez nim avec Jupyter
[Cloud103] # 3 Jupyter Notebook à nouveau
[Apprentissage automatique] Démarrez Spark avec iPython Notebook et essayez MLlib
Je souhaite utiliser facilement les fonctions R avec le notebook ipython