Objekte anzeigen mit display
¶
IPython kann Objekte anzeigen wie z.B. HTML
, JSON
, PNG
, JPEG
, SVG
und Latex
.
Bilder¶
Um Bilder (JPEG
, PNG
) in IPython und Notebooks anzuzeigen, könnt ihr die Image
-Klasse verwenden:
[1]:
from IPython.display import Image
Image("https://www.python.org/images/python-logo.gif")
[1]:
<IPython.core.display.Image object>
[2]:
from IPython.display import SVG
SVG(
"https://upload.wikimedia.org/wikipedia/commons/c/c3/Python-logo-notext.svg"
)
[2]:
Nicht-eingebettete Bilder¶
Standardmäßig sind Bilddaten eingebettet:
Image ('img_url')
Wenn jedoch
url
alskwarg
angegeben ist, wird dies als Softlink interpretiert:Image (url='img_url')
embed
kann jedoch auch explizit angegeben werden:Image (url='img_url', embed = True)
HTML¶
Python-Objekte können HTML-Repräsentationen deklarieren, die in einem Notebook angezeigt werden:
[3]:
from IPython.display import HTML
[4]:
%%html
<ul>
<li>foo</li>
<li>bar</li>
</ul>
- foo
- bar
Javascript¶
Mit Notebooks können Objekte auch eine JavaScript-Darstellung deklarieren. Dies ermöglicht dann z.B. Datenvisualisierungen mit Javascript-Bibliotheken wie d3.js.
[5]:
from IPython.display import Javascript
welcome = Javascript(
'alert("Dies ist ein Beispiel für eine durch IPython angezeigte Javascript-Warnung.")'
)
display(welcome)
Für umfangreicheres Javascript könnt ihr auch die %%javascript
-Syntax verwenden.
LaTeX¶
IPython.display
verfügt außerdem über eine integrierte Unterstützung für die Anzeige von mathematischen Ausdrücken, die in LaTeX gesetzt sind und im Browser mit MathJax gerendert werden:
[6]:
from IPython.display import Math
Math(r"F(k) = \int_{-\infty}^{\infty} f(x) e^{2\pi i k} dx")
[6]:
Bei der Latex
-Klasse müsst ihr die Begrenzungen selbst angeben. Auf diese Weise könnt ihr jedoch auch andere LaTeX-Modi verwenden, wie z.B. eqnarray
:
[7]:
from IPython.display import Latex
Latex(
r"""\begin{eqnarray}
\nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} & = \frac{4\pi}{c}\vec{\mathbf{j}} \\
\end{eqnarray}"""
)
[7]:
Audio¶
IPython ermöglicht auch das interaktive Arbeiten mit Sounds. Mit der display.Audio
-Klasse könnt ihr ein Audio-Control erstellen, das in das Notebook eingebettet ist. Die Schnittstelle ist analog zu denjenigen der Image
-Klasse. Alle vom Browser unterstützten Audioformate können verwendet werden.
[8]:
from IPython.display import Audio
Im folgenden werden wir die Sinusfunktion eines NumPy-Array als Audiosignal ausgeben. Dabei normalisiert und codiert die Audio
-Klasse die Daten und bettet das resultierende Audio in das Notebook ein.
[9]:
import numpy as np
f = 500.0
rate = 8000
L = 3
times = np.linspace(0, L, rate * L)
signal = np.sin(f * times)
Audio(data=signal, rate=rate)
[9]:
Links zu lokalen Dateien¶
IPython bietet integrierte Klassen zum Generieren von Links zu lokalen Dateien. Erstellt hierzu eine Verknüpfung zu einer einzelnen Datei mit dem FileLink
-Objekt:
[10]:
from IPython.display import FileLink, FileLinks
FileLink("magics.ipynb")
[10]:
Alternativ könnt ihr auch eine Liste mit Links zu allen Dateien in einem Verzeichnis generieren, z.B.:
[11]:
FileLinks(".")
[11]:
index.rst
tab-completion-for-modules.png
tab-completion-for-objects.png
tab-completion-for-anything.png
debugging.ipynb
magics.ipynb.license
tab-completion-for-modules.png.license
tab-completion-for-objects.png.license
tab-completion-for-anything.png.license
magics.ipynb
shell.ipynb
display.ipynb
examples.ipynb.license
examples.ipynb
myscript.py
importing.ipynb
shell.ipynb.license
extensions.rst
start.rst
importing.ipynb.license
display.ipynb.license
debugging.ipynb.license
./.ipynb_checkpoints/
examples-checkpoint.ipynb
magics-checkpoint.ipynb
display-checkpoint.ipynb
shell-checkpoint.ipynb
./mypackage/
foo.ipynb.license
__init__.py
foo.ipynb
./unix-shell/
index.rst
shell-variables.ipynb.license
sorted-length.txt
create-delete.ipynb
grep-find.ipynb.license
create-delete.ipynb.license
length.txt
dvc.list
file-system.ipynb
pipes-filters.ipynb
shell-variables.ipynb
pipes-filters.ipynb.license
file-system.ipynb.license
grep-find.ipynb
./unix-shell/.ipynb_checkpoints/
create-delete-checkpoint.ipynb
grep-find-checkpoint.ipynb
pipes-filters-checkpoint.ipynb
file-system-checkpoint.ipynb
shell-variables-checkpoint.ipynb
Notebooks anzeigen¶
[12]:
import os
import sys
import types
import nbformat
from IPython.display import HTML, display
from pygments import highlight
from pygments.formatters import HtmlFormatter
from pygments.lexers import PythonLexer
formatter = HtmlFormatter()
lexer = PythonLexer()
# publish the CSS for pygments highlighting
display(
HTML(
"""
<style type='text/css'>
%s
</style>
"""
% formatter.get_style_defs()
)
)
[13]:
def show_notebook(fname):
"""display a short summary of the cells of a notebook"""
nb = nbformat.read(fname, as_version=4)
html = []
for cell in nb.cells:
html.append(f"<h4>{cell.cell_type} cell</h4>")
if cell.cell_type == "code":
html.append(highlight(cell.source, lexer, formatter))
else:
html.append(f"<pre>{cell.source}</pre>")
display(HTML("\n".join(html)))
show_notebook(os.path.join("mypackage/foo.ipynb"))
markdown cell
# `foo.ipynb`
code cell
def bar():
return "bar"
code cell
def has_ip_syntax():
listing = !ls
return listing
code cell
def whatsmyname():
return __name__