Verknüpfung von Python und JavaScript mit dem Jupiter-Notizbuch

Einführung

Mit jupyter notebook ist eine Reihe von Abläufen von der Datenanalyse zur Visualisierung nur mit Python möglich. Wenn Sie jedoch die hohe Ausdruckskraft und Interaktivität von D3.js betrachten, erfolgt die Visualisierung mit JavaScript. Ich denke, es wird viele Fälle geben. Daher möchte ich vorstellen, wie die Daten in Python vorbereitet und an JavaScript übergeben werden.

In der folgenden Erklärung verwenden wir ein Paket namens py_d3, das D3.js-Code auf einem Jupyter-Notebook ausführt und anzeigt, aber nicht auf D3.js beschränkt ist. JavaScript kann ausgeführt werden. [^ 1]

Einrichtung von py_d3

pip install py_d3

Sie können es mit installieren. Um die Funktion zu verwenden, schreiben Sie am Anfang des Notizbuchs wie folgt.

%load_ext py_d3

Wenn Sie dann am Anfang der Zelle "%% d3" schreiben, wird der Code in dieser Zelle als HTML und JavaScript interpretiert.

Weitere Informationen finden Sie in diesem Artikel. [^ 2]

Vorbereitung

Die Zusammenarbeit verwendet die Funktion des IPython.display.HTML-Pakets, ist jedoch schwierig zu verwenden. Daher werde ich die folgende JavaScript-Funktion definieren und umbrechen. Führen Sie es in der Zelle unmittelbar nach `` `% load_ext py_d3``` aus. Es ist gut, sich in Snippets usw. zu registrieren.

%%d3
<script>
function pyexec(command) {
    return new Promise(res => {
        IPython.notebook.kernel.execute(command,
            {iopub: {
                output: 
                    out => res(JSON.parse(eval(out.content.data["text/plain"])))
            }}, 
            {silent: false});
    });
}
</script>

Zusammenarbeit

Übergeben Sie den Python-Code, der als Zeichenfolge ausgeführt werden soll, an die obige Pyexec-Funktion. Auf der Python-Seite geben Sie bitte den Wert im JSON-Format zurück.

Definieren Sie beispielsweise die Funktion auf der Python-Seite wie folgt.

import json
import numpy as np
def get_data(count):
    return json.dumps((np.random.rand(count)*10).tolist())

Die JavaScript-Seite wird wie folgt beschrieben. Beschreiben Sie die Verarbeitung, die nach dem Empfang der Daten in und nach pyexec ausgeführt werden soll. Dieses Mal führe ich ein einfaches Beispiel aus dem D3.js-Tutorial aus.

%%d3
<g></g>
<style>
element {
    height: 25px;
}
div.bar {
    display: inline-block;
    width: 20px;
    height: 75px;
    margin-right: 2px;
    background-color: teal;
}
</style>

<script>
pyexec("get_data(7)")
.then(dataset => {
    d3.select("g").selectAll("div")
    .data(dataset)
    .enter()
    .append("div")
    .attr("class", "bar")
    .style("height", function(d) {
        let barHeight = d * 5;
        return barHeight + "px";
    });
});
</script>

Dann wird das folgende Diagramm auf das Notizbuch gezeichnet.

スクリーンショット 2017-06-12 18.46.40.png

Ich werde das diesmal erstellte Notizbuch veröffentlichen → http://nbviewer.jupyter.org/gist/ssugiyama/29b586b25dc63730eb67ee6c1daefac8

Referenz

Fußnote

[^ 1]: Es ist möglich, eine Verknüpfung mit dem Standardpaket IPython.display.HTML herzustellen, ohne py_d3 zu verwenden. Da jedoch JavaScript- und HTML-Code in die Zeichenfolge geschrieben werden muss und das Escapezeichen problematisch ist, befindet es sich in der Zelle. Wir empfehlen py_d3, mit dem Sie JavaScript und HTML direkt schreiben können.

[^ 2]: Die Methode zum Laden von py_d3 wurde jedoch gegenüber der Beschreibung in diesem Artikel geändert. Verwenden Sie daher bitte "% load_ext py_d3".

Recommended Posts

Verknüpfung von Python und JavaScript mit dem Jupiter-Notizbuch
3 Jupyter Notebook (Python) Tricks
Interaktive Anzeige algebraischer Kurven in Python, Jupyter
Aufbau einer virtuellen Umgebung mit Docker + Flask (Python) + Jupyter-Notebook
Programmieren mit Python und Tkinter
Ver- und Entschlüsselung mit Python
Python und Hardware-Verwenden von RS232C mit Python-
Verwenden Sie Cython mit Jupyter Notebook
Spielen Sie mit Jupyter Notebook (IPython Notebook)
[Windows] [Python3] Installieren Sie Python3 und Jupyter Notebook (ehemals Ipython Notebook) unter Windows
Versuchen Sie, Python mit Try Jupyter auszuführen
Python mit Pyenv und Venv
Vergleich von CoffeeScript mit JavaScript-, Python- und Ruby-Grammatik
jupyter notebook in python3.8 venv umgebung
Funktioniert mit Python und R.
Kommunizieren Sie mit FX-5204PS mit Python und PyUSB
Leuchtendes Leben mit Python und OpenCV
Ermöglichen Sie externe Verbindungen mit dem Jupiter-Notebook
Formatieren mit autopep8 auf Jupyter Notebook
Roboter läuft mit Arduino und Python
Installieren Sie Python 2.7.9 und Python 3.4.x mit pip.
Snippet-Einstellungen für Python Jupyter Notebook
Neuronales Netzwerk mit OpenCV 3 und Python 3
AM-Modulation und Demodulation mit Python
Scraping mit Node, Ruby und Python
Python-Memo Anaconda x Jupyter-Notizbuch
Visualisieren Sie den Entscheidungsbaum mit einem Jupyter-Notizbuch
Machen Sie einen Sound mit Jupyter Notebook
Scraping mit Python, Selen und Chromedriver
Kratzen mit Python und schöner Suppe
Generieren Sie das Jupyter-Notizbuch ".ipynb" in Python
JSON-Codierung und -Decodierung mit Python
Hadoop-Einführung und MapReduce mit Python
[GUI in Python] PyQt5-Drag & Drop-
Jupyter Notebook: 4 banale Tipps und Tricks
Lesen und Schreiben von NetCDF mit Python
Markdown mit Jupyter-Notebook verwenden (mit Verknüpfung)
Fügen Sie mit Jupyter Notebook weitere Kernel hinzu
Ich habe mit PyQt5 und Python3 gespielt
Bequeme Analyse mit Pandas + Jupyter Notebook
Einfach zu bedienendes Jupyter-Notebook (Python3.5)
Lesen und Schreiben von CSV mit Python
Vergleichen Sie Python- und JavaScript-Array-Schleifen
Mehrfachintegration mit Python und Sympy
Koexistenz von Python2 und 3 mit CircleCI (1.0)
Sugoroku-Spiel und Zusatzspiel mit Python
FM-Modulation und Demodulation mit Python
Starten eines mit Jupyter Notebook erstellten Python-Programms
Führen Sie Jupyter mit der REST-API aus, um Python-Code zu extrahieren und zu speichern
So erstellen Sie eine Python- und Jupyter-Ausführungsumgebung mit VSCode
Kommunizieren Sie mit gRPC zwischen Elixir und Python
Datenpipeline-Aufbau mit Python und Luigi
Berechnen Sie das Standardgewicht und zeigen Sie es mit Python an
Unterschied in der Authentizität zwischen Python und JavaScript
Verwenden Sie nbextensions mit Anacondas Jupyter-Notizbuch
Überwachen Sie Mojo-Ausfälle mit Python und Skype
Speicherverlust im Python Jupyter Lab (Notebook)?
Erstellen Sie mit Docker eine Jupyter Lab (Python) -Umgebung
FM-Modulation und Demodulation mit Python Part 3