In diesem Tutorial erfahren Sie, wie Sie mit Plotly interaktive Visualisierungen erstellen. Unser Projekt konzentriert sich auf die Analyse der Ergebnisse des Würfelns. Beim Würfeln eines einzelnen sechsseitigen Würfels hat jede Zahl von 1 bis 6 die gleiche Chance, zu erscheinen. Wenn Sie jedoch mehrere Würfel werfen, werden einige Zahlen wahrscheinlicher als andere. Unser Ziel ist es, diese Wahrscheinlichkeiten zu bestimmen, indem wir Würfelwürfe simulieren und einen Datensatz erstellen. Danach werden wir die Ergebnisse mehrerer Würfe visuell darstellen, um zu zeigen, welche Ergebnisse statistisch gesehen wahrscheinlicher sind.
Plotly ist eine Open-Source-Grafikbibliothek, mit der Benutzer interaktive, webbasierte Visualisierungen erstellen können. Es unterstützt viele Diagrammtypen, darunter Liniendiagramme, Streudiagramme, Balkendiagramme und mehr. Plotly eignet sich besonders zum Erstellen von Visualisierungen, die in Webanwendungen eingebettet werden können, da es interaktive Funktionen wie Zoomen, Schwenken und Hover-Informationen bietet.
Wir installieren Plotly mit pip. Wir müssen auch Pandas installieren, eine Bibliothek zum effizienten Arbeiten mit Daten, da Plotly Express darauf angewiesen ist.
$ python -m pip install --user plotly $ python -m pip install --user pandas
Besuchen Sie die Galerie der Diagrammtypen auf der Website von Plotly, um die verschiedenen Visualisierungen zu sehen, die Sie mit Plotly erstellen können.
Zuerst erstellen wir die folgende Die-Klasse, um den Wurf eines Würfels zu simulieren. Wir nennen die Datei Die.py.
from random import randint class Die: """A class representing a single die.""" def __init__(self, num_sides = 6): """Assume a six-sided die""" self.num_sides = num_sides def roll(self): """Return a random value between 1 and number of sides.""" return randint(1, self.num_sides)
Die Methode __ init __ benötigt ein optionales Argument. Wenn eine Instanz von Die erstellt wird, beträgt die Anzahl der Seiten sechs, wenn kein Argument angegeben wird. Wenn ein Argument angegeben wird, wird die Anzahl der Seiten des Würfels festgelegt.
Die roll()-Methode verwendet die randint()-Funktion, um eine Zufallszahl zwischen 1 und der Anzahl der Seiten zurückzugeben. Diese Funktion kann den Startwert (1), den Endwert (num_sides) oder eine beliebige Ganzzahl dazwischen zurückgeben. Würfel werden nach der Anzahl ihrer Seiten benannt: Ein sechsseitiger Würfel heißt W6, ein zehnseitiger Würfel heißt W10 und so weiter.
Wir importieren zunächst das Plotly Express-Modul mit dem Alias px, um die wiederholte Eingabe von plotly.express zu vermeiden. Wir erstellen eine Instanz eines Würfels, um das Werfen von zwei W8-Würfeln zu simulieren. Wir nennen diese Datei dice_visual.py.
import plotly.express as px from die import Die # Create two D8. die_1 = Die(8) die_2 = Die(8) # Make some rolls, and store results in a list. results = [] for roll_num in range(500_000): result = die_1.roll() die_2.roll() results.append(result)
Das kleinstmögliche Ergebnis ist die Summe der kleinsten Zahl auf jedem Würfel (2). Das größtmögliche Ergebnis ist die Summe der größten Zahl auf jedem Würfel (16), die max_results zugewiesen wird. Die Variable max_result verbessert die Lesbarkeit des Codes zur Generierung von poss_results. Wir hätten Reichweite (2,16) schreiben können, aber das würde nur für zwei D8-Würfel funktionieren. Bei der Simulation realer Umstände ist es am besten, Code zu entwickeln, der eine Vielzahl von Szenarien problemlos bewältigen kann.
# Analyze the result. frequencies = [] max_results = die_1.num_sides die_2.num_sides poss_results = range(2, max_results 1) for value in poss_results: frequency = results.count(value) frequencies.append(frequency)
Wir haben den Titel definiert und ihn „title“ zugewiesen. Wir haben ein Wörterbuch erstellt, um Achsenbeschriftungen anzugeben. Die Schlüssel des Wörterbuchs stellen die Beschriftungen dar, die wir anpassen möchten, während die Werte die benutzerdefinierten Beschriftungen darstellen, die wir verwenden möchten. Wir nennen die x-Achse „Ergebnis“ und die y-Achse „Ergebnishäufigkeit“. Um ein Balkendiagramm zu erstellen, verwenden wir die Funktion px.bar() und übergeben die optionalen Variablen „title“ und „labels“.
# Visualize the results. title = "Results of Rolling Two D8 Dice 500,000 Times" labels = {'x': 'Result', 'y': 'Frequency of Result'} fig = px.bar(x = poss_results, y = frequencies, title = title, labels = labels) fig.show()
Das Diagramm wird mit einem entsprechenden Titel und Beschriftungen für jede Achse generiert, wie im Bild unten zu sehen ist.
Es gibt ein Problem, das wir mit der Handlung, die wir gerade erstellt haben, angehen müssen. Da es 11 Balken gibt, lassen die Standardeinstellungen für das X-Achsen-Layout einige Balken unbeschriftet. Während die Standardeinstellungen für die meisten Visualisierungen ausreichend sind, würde dieses Diagramm besser aussehen, wenn alle Balken beschriftet wären.
Plotly bietet eine update_layout()-Methode, mit der Sie verschiedene Änderungen an einer Figur vornehmen können, nachdem sie erstellt wurde. So können Sie Plotly anweisen, jedem Riegel ein eigenes Etikett zu geben.
# Further customize chart. fig.update_layout(xaxis_dtick = 1) fig.show() #fig.write_html('dice_visual_d6d10.xhtml')
Die Methode update_layout() gilt für das Fig-Objekt, das das gesamte Diagramm darstellt. Wir verwenden die Option xaxis_dtick, um den Abstand zwischen Teilstrichen auf der x-Achse festzulegen. Wir setzen den Abstand auf 1, damit jeder Balken beschriftet ist. Wenn Sie dice_visual.py erneut ausführen, sollten auf jeder Leiste Beschriftungen angezeigt werden.
Dieser Code kann leicht angepasst werden, um Würfel unterschiedlicher Größe zu simulieren. Um einen D6 und einen D10 zu erstellen, übergeben Sie beim Erstellen der beiden Die-Instanzen die Argumente 6 und 10. Ändern Sie die erste Schleife auf die gewünschte Anzahl an Rollen und ändern Sie den Titel der Grafik entsprechend.
Wir können unser Programm dazu bringen, das Diagramm automatisch als HTML-Datei zu speichern, indem wir den Aufruf von fig.show() durch einen Aufruf von fig.write_html() ersetzen.
Die Methode write_html() erfordert ein Argument: den Namen der Datei, in die geschrieben werden soll. Wenn Sie nur einen Dateinamen angeben, wird die Datei im selben Verzeichnis wie die .py-Datei gespeichert. Sie können write_html() auch mit einem Path-Objekt aufrufen, um die Ausgabedatei an einer beliebigen Stelle auf Ihrem System zu speichern.
Hier ist der vollständige Code:
import plotly.express as px from die import Die # Create two D8. die_1 = Die(8) die_2 = Die(8) # Make some rolls, and store results in a list. results = [] for roll_num in range(500_000): result = die_1.roll() die_2.roll() results.append(result) # Analyze the result. frequencies = [] max_results = die_1.num_sides die_2.num_sides poss_results = range(2, max_results 1) for value in poss_results: frequency = results.count(value) frequencies.append(frequency) # Visualize the results. title = "Results of Rolling Two D8 Dice 500,000 Times" labels = {'x': 'Result', 'y': 'Frequency of Result'} fig = px.bar(x = poss_results, y = frequencies, title = title, labels = labels) # Further customize chart. fig.update_layout(xaxis_dtick = 1) fig.write_html('dice_visual.xhtml')
Aus Gründen der Übersichtlichkeit verwenden die Auflistungen in diesem Abschnitt die Langform von for-Schleifen. Wir können den Code umgestalten, indem wir Listenverständnisse für eine oder beide Schleifen verwenden. Hier ist der Code, der das Listenverständnis verwendet:
import plotly.express as px from die import Die # Create two D8. die_1 = Die(8) die_2 = Die(8) # Make some rolls, and store results in a list. results = [die_1.roll() die_2.roll() for roll_num in range(500_000) ] # Analyze the result. max_results = die_1.num_sides die_2.num_sides poss_results = range(2, max_results 1) frequencies = [results.count(value) for value in poss_results] # Visualize the results. title = "Results of Rolling Two D8 Dice 500,000 Times" labels = {'x': 'Result', 'y': 'Frequency of Result'} fig = px.bar(x = poss_results, y = frequencies, title = title, labels = labels) # Further customize chart. fig.update_layout(xaxis_dtick = 1) fig.write_html('dice_visual_list_comprehension.xhtml')
Zusammenfassend lässt sich sagen, dass die Analyse und Präsentation statistischer Daten mit Plotly für die interaktive Visualisierung von Würfelwurfdaten leistungsstark und ansprechend wird. Durch die Simulation von Würfelwürfen und die Visualisierung der Ergebnisse können wir die Wahrscheinlichkeiten verschiedener Ergebnisse besser verstehen. Die interaktiven Funktionen von Plotly, wie Hover-Informationen, Schwenken und Zoomen, verbessern das Benutzererlebnis und machen Daten leichter zugänglich. Darüber hinaus erleichtert die Möglichkeit, Visualisierungen anzupassen und als HTML-Dateien zu speichern, deren Weitergabe und Integration in Webanwendungen. In diesem Artikel wird gezeigt, wie Sie die Funktionen von Plotly nutzen, um informative und attraktive Diagramme zu erstellen. Plotly ist ein hervorragendes Tool zur Datenanalyse und -präsentation.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3