Python Language
Datenvisualisierung mit Python
Suche…
Matplotlib
Matplotlib ist eine mathematische Plotterbibliothek für Python, die eine Vielzahl verschiedener Plotfunktionen bietet.
Die Matplotlib-Dokumentation finden Sie hier , die SO-Dokumente stehen hier zur Verfügung.
Matplotlib bietet zwei verschiedene Methoden zum Plotten, die jedoch größtenteils austauschbar sind:
- Erstens bietet matplotlib die
pyplot
Schnittstelle, eine direkte und einfach zu verwendende Schnittstelle, die daspyplot
komplexer Diagramme in einem MATLAB-ähnlichen Stil ermöglicht. - Zweitens ermöglicht matplotlib dem Benutzer, die verschiedenen Aspekte (Achsen, Linien, Hilfsstriche usw.) direkt über ein objektbasiertes System zu steuern. Dies ist schwieriger, ermöglicht jedoch die vollständige Kontrolle über die gesamte Grafik.
Im Folgenden sehen Sie ein Beispiel für die Verwendung der pyplot
Schnittstelle zum pyplot
einiger generierter Daten:
import matplotlib.pyplot as plt
# Generate some data for plotting.
x = [0, 1, 2, 3, 4, 5, 6]
y = [i**2 for i in x]
# Plot the data x, y with some keyword arguments that control the plot style.
# Use two different plot commands to plot both points (scatter) and a line (plot).
plt.scatter(x, y, c='blue', marker='x', s=100) # Create blue markers of shape "x" and size 100
plt.plot(x, y, color='red', linewidth=2) # Create a red line with linewidth 2.
# Add some text to the axes and a title.
plt.xlabel('x data')
plt.ylabel('y data')
plt.title('An example plot')
# Generate the plot and show to the user.
plt.show()
Beachten Sie, dass plt.show()
bekanntermaßen in einigen Umgebungen problematisch ist, weil matplotlib.pyplot
im interaktiven Modus ausgeführt wird. Wenn dies der Fall ist, kann das Blockierungsverhalten explizit überschrieben werden, indem das optionale Argument plt.show(block=True)
, um das Problem zu mildern.
Seaborn
Seaborn ist eine Hülle um Matplotlib, die das Erstellen gemeinsamer statistischer Diagramme vereinfacht. Die Liste der unterstützten Diagramme umfasst univariate und bivariate Verteilungsdiagramme, Regressionsdiagramme und eine Reihe von Methoden zum Zeichnen kategorialer Variablen. Die vollständige Liste der Grundstücke, die Seaborn bietet, finden Sie in der API-Referenz .
Das Erstellen von Diagrammen in Seaborn ist so einfach wie das Aufrufen der entsprechenden Grafikfunktion. Hier ein Beispiel zum Erstellen eines Histogramms, einer Schätzung der Kerndichte und eines Rug-Plots für zufällig generierte Daten.
import numpy as np # numpy used to create data from plotting
import seaborn as sns # common form of importing seaborn
# Generate normally distributed data
data = np.random.randn(1000)
# Plot a histogram with both a rugplot and kde graph superimposed
sns.distplot(data, kde=True, rug=True)
Der Stil des Diagramms kann auch mit einer deklarativen Syntax gesteuert werden.
# Using previously created imports and data.
# Use a dark background with no grid.
sns.set_style('dark')
# Create the plot again
sns.distplot(data, kde=True, rug=True)
Als zusätzlicher Bonus können noch normale Matplotlib-Befehle auf Seaborn-Plots angewendet werden. Hier ein Beispiel zum Hinzufügen von Achsentiteln zu unserem zuvor erstellten Histogramm.
# Using previously created data and style
# Access to matplotlib commands
import matplotlib.pyplot as plt
# Previously created plot.
sns.distplot(data, kde=True, rug=True)
# Set the axis labels.
plt.xlabel('This is my x-axis')
plt.ylabel('This is my y-axis')
MayaVI
MayaVI ist ein 3D-Visualisierungswerkzeug für wissenschaftliche Daten. Es verwendet das Visualization Tool Kit oder VTK unter der Haube. Mit der Kraft von VTK kann MayaVI eine Vielzahl von dreidimensionalen Darstellungen und Abbildungen erstellen . Es ist als separate Softwareanwendung und auch als Bibliothek verfügbar. Ähnlich wie Matplotlib bietet diese Bibliothek eine objektorientierte Programmiersprachenschnittstelle, um Plots zu erstellen, ohne VTK zu kennen.
MayaVI ist nur in der Python 2.7x-Serie verfügbar! Es wird gehofft, bald in Python 3-x-Serie verfügbar zu sein! (Obwohl einige Erfolge bei der Verwendung der Abhängigkeiten in Python 3 zu verzeichnen sind)
Dokumentation finden Sie hier . Einige Galeriebeispiele finden Sie hier
Hier ist ein Beispieldiagramm, das mit MayaVI aus der Dokumentation erstellt wurde.
# Author: Gael Varoquaux <[email protected]>
# Copyright (c) 2007, Enthought, Inc.
# License: BSD Style.
from numpy import sin, cos, mgrid, pi, sqrt
from mayavi import mlab
mlab.figure(fgcolor=(0, 0, 0), bgcolor=(1, 1, 1))
u, v = mgrid[- 0.035:pi:0.01, - 0.035:pi:0.01]
X = 2 / 3. * (cos(u) * cos(2 * v)
+ sqrt(2) * sin(u) * cos(v)) * cos(u) / (sqrt(2) -
sin(2 * u) * sin(3 * v))
Y = 2 / 3. * (cos(u) * sin(2 * v) -
sqrt(2) * sin(u) * sin(v)) * cos(u) / (sqrt(2)
- sin(2 * u) * sin(3 * v))
Z = -sqrt(2) * cos(u) * cos(u) / (sqrt(2) - sin(2 * u) * sin(3 * v))
S = sin(u)
mlab.mesh(X, Y, Z, scalars=S, colormap='YlGnBu', )
# Nice view from the front
mlab.view(.0, - 5.0, 4)
mlab.show()
Plotly
Plotly ist eine moderne Plattform zum Plotten und zur Datenvisualisierung. Plotly ist eine Bibliothek für Python , R , JavaScript , Julia und MATLAB . Es kann auch als Webanwendung mit diesen Sprachen verwendet werden.
Benutzer können die plotly-Bibliothek installieren und nach der Benutzerauthentifizierung offline verwenden. Die Installation dieser Bibliothek und Offline - Authentifizierung ist gegeben hier . Die Diagramme können auch in Jupyter Notebooks erstellt werden.
Die Verwendung dieser Bibliothek erfordert ein Konto mit Benutzername und Kennwort. Dadurch wird der Arbeitsbereich zum Speichern von Plots und Daten in der Cloud bereitgestellt.
Die kostenlose Version der Bibliothek hat einige geringfügig eingeschränkte Funktionen und ist für die Erstellung von 250 Plots pro Tag konzipiert. Die kostenpflichtige Version bietet alle Funktionen, unbegrenzte Plot-Downloads und mehr privaten Datenspeicher. Für weitere Details kann man die Hauptseite hier besuchen.
Dokumentation und Beispiele finden Sie hier
Ein Beispieldiagramm aus den Dokumentationsbeispielen:
import plotly.graph_objs as go
import plotly as ply
# Create random data with numpy
import numpy as np
N = 100
random_x = np.linspace(0, 1, N)
random_y0 = np.random.randn(N)+5
random_y1 = np.random.randn(N)
random_y2 = np.random.randn(N)-5
# Create traces
trace0 = go.Scatter(
x = random_x,
y = random_y0,
mode = 'lines',
name = 'lines'
)
trace1 = go.Scatter(
x = random_x,
y = random_y1,
mode = 'lines+markers',
name = 'lines+markers'
)
trace2 = go.Scatter(
x = random_x,
y = random_y2,
mode = 'markers',
name = 'markers'
)
data = [trace0, trace1, trace2]
ply.offline.plot(data, filename='line-mode')