Handlung.Graph_Objects.Streuung

Handlung.Graph_Objects.Streuung
Abhängig von Ihrer Umgebung bringt Plotly Ihre Zahlen mit einem Webbrowser. Ein Webbrowser unterstützt SVG -API- und WebGL -Rendering -Funktionen. SVG Rendering verwendet das Vektor -Rendering, während WebGL Canvas -API verwendet, wobei das Rendering mit GPU und der WebGL -API schnelleres Rendering verwendet wird.

In der Regel bemerken Sie den Unterschied zwischen der SVG- und der WebGL -Rendered -Abbildung nicht, es sei denn, Sie zeichnen eine große Menge Datensatz auf. Dies liegt daran, dass WebGL so konzipiert ist.

In diesem Artikel werden wir versuchen, Ihnen zu zeigen.

1 Million Punkte mit Plotly Express aufnehmen

Obwohl Plotly Graph_Objects eine große Anpassung und Kontrolle auf niedriger Ebene liefert, ist es gut, die schnellste und effizienteste Methode zum Erstellen eines WebGL-Renders zu verstehen.

Hier kommt Plotly Express ins Spiel. Mit dem Parameter render_mode können Sie ein Streudiagramm erstellen und Plotly angeben, dass Sie WebGL anstelle von SVG verwenden sollen, um eine Figur zu rendern.

Ein Beispiel ist wie im Folgenden dargestellt:

Handlung importieren.als px ausdrücken
Numph als NP importieren
Pandas als PD importieren
n = 100000
df = pd.DataFrame (DICT (DICT (
x = np.willkürlich.Randn (n),
y = np.willkürlich.Randn (n)
))
Abb = Px.Streuung (df, x = 'x', y = 'y')
Feige.zeigen()

Der vorherige Code erstellt ein Streudiagramm von 10000 Punkten mit dem WebGL Renderer Enable.

Verwenden von Plotly Graph_Objects

Zum Glück können wir in Plotly Graph_Objects die ScatterGL -Funktion verwenden, die standardmäßig die WebGL verwendet.

Der Beispielcode ist wie im Folgenden dargestellt:

Handlung importieren.Graph_Objects as Go
Numph als NP importieren
n = 100000
Fig = Go.Figur()
Feige.add_trace (
gehen.Streuung (
x = np.willkürlich.Randn (n),
y = np.willkürlich.Randn (n),
Modus = 'Marker'
)
)
Feige.zeigen()

Zeit rendern (SVG vs WebGL)

Wie bereits erwähnt, bietet WebGL einen Leistungsvorteil gegenüber SVG. Dies kann bei der Darstellung eines großen Datensatzes veranschaulicht werden.

Beispiel 1: Verwenden von Scattergl

Handlung importieren.Graph_Objects as Go
Numph als NP importieren
n = 10000000
Fig = Go.Figur()
Feige.add_trace (
gehen.Streuung (
x = np.willkürlich.Randn (n),
y = np.willkürlich.Randn (n),
Modus = 'Marker'
)
)
Feige.zeigen()

Der vorherige Code macht in etwa 3M 8 wieder.3Sec.

Beispiel 2: Ohne WebGL

Handlung importieren.als px ausdrücken
Numph als NP importieren
Pandas als PD importieren
n = 10000000
df = pd.DataFrame (DICT (DICT (
x = np.willkürlich.Randn (n),
y = np.willkürlich.Randn (n)
))
Abb = Px.Streuung (df, x = 'x', y = 'y')
Feige.zeigen()

Dieser Code liefert in etwa 5 min 12.5 Sekunden.

Denken Sie daran, dass die vorherigen Werte von einer einmaligen Zeit stammen, aber nicht genau den Vorteil von WebGL gegenüber SVG und umgekehrt widerspiegeln.

Wir empfehlen Ihnen, Ihren Test durchzuführen, der Ihren Umgebung und Berechnungsanforderungen entspricht.

Abschluss

In diesem Artikel haben wir veranschaulicht, wie wir ein Streudiagramm mit SVG und WebGL -Rendering in Plotly erstellen können.