Interaktive Datenvisualisierung mit Bokeh (und Python)

Inhalt

Einführung

Vor kurzem, Ich habe ein Video von der SciPy-Konferenz gelesen 2015, „Erstellen von Python-Datenanwendungen mit Blaze und Bokeh“, Kürzlich in Austin . abgehalten, Texas, EE. UU. Ich konnte nicht aufhören, über die Macht nachzudenken, die diese beiden Bibliotheken den Datenwissenschaftlern bieten, die Python auf der ganzen Welt verwenden.. In diesem Artikel, Ich werde Sie in die Welt der Möglichkeiten der Datenvisualisierung mit Bokeh einführen und warum ich denke, dass dies eine Bibliothek ist, die alle Data Scientists lernen sollten / benutzen.

bokeh_introduction-1496563 Quelle: bokeh.pydata.org

Was ist Bokeh?

Bokeh ist eine Python-Bibliothek für interaktive Visualisierung, die auf Webbrowser zum Rendern abzielt. Dies ist der Hauptunterschied zwischen Bokeh und anderen Anzeigebibliotheken. Sehen Sie sich den Schnappschuss unten an, Hier wird der Prozessablauf erläutert, wie Bokeh dabei hilft, Daten in einem Webbrowser zu präsentieren.

bokeh_intro-1850441Quelle: Kontinuumsanalyse

Wie du siehst, Bokeh hat mehrere Sprachlinks (Python, R, lua und Julia). Diese Verknüpfungen erzeugen eine JSON, was als Input für . dient BokehJS (eine Javascript-Bibliothek), die wiederum Daten modernen Webbrowsern präsentiert.

Bokeh kann ein elegantes und interaktives Display wie D3.js mit leistungsstarker Interaktivität bei sehr großen oder Streaming-Datensätzen erzeugen. Bokeh kann jedem helfen, der schnell und einfach Grafiken erstellen möchte, interaktive Daten-Dashboards und Apps.

Was bietet Bokeh einem Data Scientist wie mir?

Ich begann meine Reise in die Datenwissenschaft als BI-Profi und arbeitete mich dann durch Predictive Modeling, Datenwissenschaft und maschinelles Lernen. Ich habe mich hauptsächlich auf Tools wie QlikView und Tableau für die Datenvisualisierung und SAS und Python für Predictive Analytics und Data Science verlassen.. Ich hatte fast keine Erfahrung mit JavaScript.

Dann, für alle meine Daten oder Ideenprodukte, Ich musste die Arbeit auslagern oder meine Ideen über Wireframes präsentieren, die nicht ideal für den Bau von schnellen Prototypen sind. Jetzt, Bokeh-Con, Kann ich weiter im Python-Ökosystem arbeiten?, aber trotzdem kann ich diese Prototypen schnell erstellen.

Bokeh-Vorteile:

  • Mit Bokeh können Sie schnell und mit einfachen Befehlen komplexe statistische Diagramme erstellen
  • Bokeh bietet Ihnen Ausgabe in verschiedenen Medien wie HTML, Notebook und Server
  • Wir können Bokeh-Displays auch in Flask und Django-App einbetten
  • Bokeh kann die in anderen Bibliotheken wie Matplotlib geschriebene Anzeige transformieren, Seegeboren, ggplot
  • Bokeh ist flexibel, um Interaktionen anzuwenden, Layouts und verschiedene Anzeigestiloptionen.

Herausforderungen mit Bokeh:

  • Wie bei jeder kommenden Open-Source-Bibliothek, Bokeh befindet sich in einer großen Entwicklung. Deswegen, Der Code, den Sie heute schreiben, ist in Zukunft möglicherweise nicht vollständig wiederverwendbar.
  • Hat relativ weniger Anzeigeoptionen, im Vergleich zu D3.js. Deswegen, Es ist unwahrscheinlich, dass er D3.js in naher Zukunft um seine Krone herausfordern wird.

Angesichts der Vorteile und Herausforderungen, heute ist es ideal, schnell Prototypen zu entwickeln. Aber trotzdem, wenn Sie etwas für die Produktionsumgebung erstellen möchten, D3.js könnte Ihre beste Wahl sein.

Bokeh installieren, folge den Anweisungen hier.

Visualisierung mit Bokeh

Bokeh bietet leistungsstarke und flexible Funktionen, die Einfachheit und hoch entwickelte Anpassungsmöglichkeiten bieten. Stellen Sie dem Benutzer mehrere Anzeigeschnittstellen zur Verfügung, wie unten gezeigt:bokeh_interface-7671639

  • Grafik: ein hohes Level Schnittstelle, die verwendet wird, um komplexe statistische Diagramme so schnell und einfach zu erstellen.
  • Grafisch: ein Mittelstufe Benutzeroberfläche, die sich auf die visuelle Glyphenkomposition konzentriert.
  • Modelle: ein niedriges Niveau Schnittstelle, die Anwendungsentwicklern maximale Flexibilität bietet.

In diesem Artikel, wir sehen nur die Grafiken und das Layout der ersten beiden Schnittstellen. Wir werden die Modelle und andere erweiterte Funktionen dieser Bibliothek im nächsten Beitrag besprechen..

Grafik

Wie bereits erwähnt, ist eine High-Level-Schnittstelle zur Darstellung von Informationen in Form einer Standardanzeige. Diese Formulare beinhalten Boxplot, Balkengrafik, Flächendiagramm, Heatmap, Donut-Diagramm und viele andere. Sie können diese Diagramme erstellen, indem Sie einfach Datenrahmen übergeben, Matrizen und Wörterbücher.

Schauen wir uns die gängige Methode zum Erstellen eines Diagramms an:

  1. Bibliothek und Funktionen importieren / Methoden
  2. Bereiten Sie die Daten vor
  3. Stellen Sie den Ausgabemodus ein (tragbar, Webbrowser oder Server)
  4. Grafik mit Stiloption erstellen (Falls erforderlich)
  5. Schau dir die Grafik an

Um diese Schritte besser zu verstehen, Lassen Sie mich diese Schritte anhand des folgenden Beispiels demonstrieren:

Grafikbeispiel 1: Erstellen Sie ein Balkendiagramm und zeigen Sie es im Webbrowser mit Bokeh an

Wir werden die oben aufgeführten Schritte befolgen, um ein Diagramm zu erstellen:

#Bibliothek importieren
aus bokeh.charts importieren Bar, Ausgabedatei, #use output_notebook anzeigen, um es im Notebook zu visualisieren
# Daten vorbereiten (Dummy-Daten)
Daten = {"Ja": [1, 2, 3, 4, 5]}
# Ausgabe in Line.HTML
Ausgabedatei("Zeilen.html", Titel="Beispiel für ein Liniendiagramm") #put output_notebook() für Notebook
# Erstellen Sie einen neuen Zeilenchat mit einem Titel und Achsenbeschriftungen
p = Bar(Daten, Titel="Beispiel für ein Liniendiagramm", xlabel="x", ylabel="Werte", Breite = 400, Höhe = 400)
# zeige die Ergebnisse
zeigen(P)
Balkendiagramm-7356470

In der Grafik oben, Sie können die Werkzeuge oben sehen (Zoomen, Größe ändern, neustarten, Zoom de rueda) und diese Tools ermöglichen es Ihnen, mit dem Diagramm zu interagieren. Sie können auch die mehreren Diagrammoptionen sehen (Legende, xlabel, ylabel, xgrid, Breite, hoch und viele andere) und verschiedene Grafikbeispiele hier.

Diagrammbeispiel 2: Vergleichen Sie die Verteilung von Kelchblattlänge und Kronblattlänge aus dem IRIS-Datensatz mithilfe des Boxplots im Notebook

So erstellen Sie diese Visualisierung, erste, Ich werde den Iris-Datensatz mit der sklearn-Bibliothek importieren. Später, Befolgen Sie die oben beschriebenen Schritte, um das Diagramm im ipython-Notebook anzuzeigen.

#IRIS-Datensatz
aus sklearn.datasets import load_iris
Pandas als pd importieren
iris = load_iris()
df=pd.DataFrame(iris.daten)
df.columns=['petal_width','petal_length',''sepal_width',''sepal_length']
#Bibliothek importieren
aus bokeh.charts importieren BoxPlot, output_notebook, zeigen
Daten=df[['petal_length',''sepal_length']]
# Ausgabe auf Notebook
output_notebook()
# Erstellen Sie einen neuen Zeilenchat mit einem Titel und Achsenbeschriftungen
p = BoxPlot(Daten, Breite = 400, Höhe = 400)
# zeige die Ergebnisse
zeigen(P)

bokeh_box_plot-8049544

Diagrammbeispiel 3: Erstellen Sie ein Liniendiagramm auf dem Bokeh-Server

Vor dem Plotten der Visualisierung auf dem Bokeh-Server, muss es laufen lassen.

Wenn Sie ein Conda-Paket verwenden, Sie können den Befehl ausführen verwenden Bokeh-Server aus einem beliebigen Verzeichnis mit dem Befehl. Der Rest, python ./bokeh-server Der Befehl sollte im Allgemeinen funktionieren. Für weitere Details dazu, Überprüfen Sie diesen Link „Implementierung des Bokeh-Servers“.

Das Plotten der Anzeige auf dem Bokeh-Server bietet mehrere Vorteile:

  • Pakete können für ein breiteres Publikum veröffentlicht werden
  • Visualisieren Sie einen großen Datensatz interaktiv
  • Datenübertragung zur automatischen Aktualisierung der Grafiken
  • Dashboard- und App-Erstellung

So starten Sie das Plotten auf dem Bokeh-Server, Ich habe den Befehl ausgeführt Bokeh-Server um es zu initialisieren, gefolgt von den Befehlen für die Anzeige.

bokeh_server-8085815

aus bokeh.plotting Importfigur, Ausgabeserver, zeigen
Ausgabeserver("Leitung")
p = Zahl(plot_width=400, plot_height=400)
# einen Linienrenderer hinzufügen
p.line([5, 2, 3, 4, 5], [5, 7, 2, 4, 5], line_width=2)
zeigen(P)

bokeh_server_visualization-6360568

Grafisch

Spur ist a Mittelstufe Benutzeroberfläche, die sich auf die visuelle Glyphenkomposition konzentriert. Hier, Erstellen Sie eine Visualisierung, indem Sie mehrere kombinieren visuelle Elemente (Punkt, Kreise, Linie, Patch und viele andere) Ja Instrumente (Scroll-Werkzeug, Zoomen, speichern, zurücksetzen und andere).

Bokeh-Grafiken erstellt mit dem bokeh.plotten Die Benutzeroberfläche wird mit einem Standardsatz an Werkzeugen und visuellen Stilen geliefert. Verfolgen, folgen Sie den unteren Schritten:

  1. Bibliothek importieren, Methoden oder Funktionen
  2. Ausgabemodus auswählen (tragbar, Web-Navigator, Server)
  3. Aktivieren Sie eine Abbildung (ähnlich einer Matplotlib)
  4. Führen Sie nachfolgende Plotvorgänge durch, wirkt sich auf die generierte Figur aus.
  5. Visualisiere es

Um diese Schritte besser zu verstehen, Lassen Sie mich diese Schritte anhand der folgenden Beispiele demonstrieren:

Beispielgrafik-1: Erstellen Sie eine quadratische Punktmarkierung auf dem XY-Rahmen des Notebooks

von bokeh.plotten importieren Abbildung, output_notebook, zeigen

# Ausgabe auf Notebook
output_notebook()
P = Abbildung(plot_width=400, Grundstückshöhe=400)
# Quadrat mit einer Größe hinzufügen, Farbe, und alpha
P.Quadrat([2, 5, 6, 4], [2, 3, 2, 1, 2], Größe=20, Farbe="Marine")
# zeige die Ergebnisse
zeigen(P)

bokeh_scatter-9023945

Auf die gleiche Weise, kann verschiedene andere Diagramme wie Linie erstellen, Keile und Bogen, Ovale, Bilder, Patches und viele andere, Sieh dir das an Verknüpfung um verschiedene Beispiele zu sehen.

Plotbeispiel-2: Kombinieren Sie zwei Visuals in einem Diagramm

aus bokeh.plotting Importfigur, output_notebook, zeigen
# Ausgabe auf Notebook
output_notebook()
p = Zahl(plot_width=400, plot_height=400)
# Quadrat mit einer Größe hinzufügen, Farbe, und alpha
p.quadrat([2, 5, 6, 4], [2, 3, 2, 1, 2], Größe = 20, Farbe="Marine")
p.line([1, 2, 3, 4, 5], [1, 2, 2, 4, 5], line_width=2) #ein Liniendiagramm zu einer bestehenden Figur hinzugefügt
# zeige die Ergebnisse
zeigen(P)

multiple_plots-2934996

Plotbeispiel-3: Fügen Sie dem obigen Diagramm ein Gleitkomma-Werkzeug und Achsenbeschriftungen hinzu

aus bokeh.plotting Importfigur, output_notebook, zeigen
von bokeh.models importieren HoverTool, BoxSelectTool #Zum Aktivieren von Tools
# Ausgabe auf Notebook
output_notebook()
#Werkzeuge hinzufügen
WERKZEUGE = [BoxSelectTool(), HoverTool()]
p = Zahl(plot_width=400, plot_height=400, Werkzeuge=WERKZEUGE)
# füge ein Quadrat mit einer Größe hinzu, Farbe, und alpha
p.quadrat([2, 5, 6, 4], [2, 3, 2, 1, 2], Größe = 20, Farbe="Marine", Alpha=0,5)
#Visuelle Elemente
p.xaxis.axis_label = "X-Achse"
p.yaxis.axis_label = "Y-Achse"
# zeige die Ergebnisse
zeigen(P)

bokeh_tools_visualize-1363299

Weitere Informationen zu visuellen Attributen und Tools, Überprüfen Sie diese Links:

Beispielgrafik-4: Indien-Kartendiagramm mit Breiten- und Längengraddaten für Grenzen

Notiz: Ich habe Polygondaten für Breitengrade und Längengrade für indische Grenzen im CSV-Format. Ich werde es verwenden, um zu verfolgen.

Hier, wir gehen mit patchen, Sehen wir uns die Befehle unten an:

#Bibliotheken importieren
Pandas als pd importieren
aus bokeh.plotting Importfigur, zeigen, output_notebook
#Breiten- und Längengrad-Koordinaten importieren
Indien=pd.read_csv('E:/India.csv')
von Indien['ID']
Indien.index=['IN0','IN1','IN2','IN3','IN4','IN5']
#Konvertieren Sie String-Werte in Float, da die Koordinaten im Datenrahmen String sind
für j im Bereich(0,len(Indien)):
 a = Indien['Lats'][J]
 Indien['Lats'][J] = [schweben(ich) für ich in a[1:len(ein)-1].Teilt(",")]
für j im Bereich(0,len(Indien)):
 a = Indien['Lons'][J]
 Indien['Lons'][J] = [schweben(ich) für ich in a[1:len(ein)-1].Teilt(",")]
# Ausgabeoption
output_notebook()
# Erstelle dein Grundstück
p = Zahl(plot_height=400, plot_width=400, Toolbar_location="rechts",x_axis_type=Keine, y_axis_type=Keine)
p.patches(xs=Indien['Lons'], ys=Indien['Lats'], fill_color="Weiß",line_color="Schwarz", line_width=0.5)
#Visualisieren Sie Ihr Diagramm
zeigen(P)

Indien-7239691

Abschließende Anmerkungen

In diesem Artikel, wir analysieren die Erstellung von Visualisierungen mit Bokeh und Methoden um diese in Notebooks darzustellen, html und Bokeh-Server. Wir haben auch die Methoden zum Erstellen einer benutzerdefinierten Visualisierung mit Plotten besprochen, Hier können Sie mehrere Visuals kombinieren, um Informationen darzustellen.

In meinem nächsten Beitrag zu Bokeh, Ich werde über weitere interaktive Anzeigemodelle und Funktionen sprechen. Zum Beispiel, Ich habe koordinierte Grenzen für jedes Land auf der ganzen Welt. Jetzt, Ich möchte eine Visualisierung erstellen, um die Karte jedes Landes in einem Zyklus darzustellen (Schleife). Beginnen Sie mit dem Zeichnen mit einer Länderkarte und warten Sie 3 Sekunden und Iterationen für alle Länder. Hört sich interessant an! Es ist nicht so?

Fanden Sie diesen Artikel nützlich?? Teilen Sie uns Ihre Meinung zu diesem Artikel im Kommentarbereich unten mit..

Wenn Ihnen das, was Sie gerade gelesen haben, gefällt und Sie weiter über Analytics lernen möchten, abonnieren Sie unsere E-Mails, Folge uns auf Twitter oder wie bei uns Seite auf Facebook.

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.

Datenlautsprecher