Plotly - Hinzufügen von Schaltflächen Dropdown
Plotly bietet ein hohes Maß an Interaktivität durch die Verwendung verschiedener Steuerelemente im Plotbereich - wie Schaltflächen, Dropdowns und Schieberegler usw. Diese Steuerelemente sind in integriert updatemenuAttribut des Plotlayouts. Sie könnenadd button und sein Verhalten durch Angabe der aufzurufenden Methode.
Es gibt vier mögliche Methoden, die einer Schaltfläche wie folgt zugeordnet werden können:
restyle - Daten oder Datenattribute ändern
relayout - Layoutattribute ändern
update - Daten und Layoutattribute ändern
animate - eine Animation starten oder anhalten
Das restyle Methode sollte verwendet werden, wenn modifying the data and data attributesdes Graphen. Im folgenden Beispiel werden zwei Schaltflächen von hinzugefügtUpdatemenu() Methode zum Layout mit restyle Methode.
go.layout.Updatemenu(
type = "buttons",
direction = "left",
buttons = list([
dict(args = ["type", "box"], label = "Box", method = "restyle"),
dict(args = ["type", "violin"], label = "Violin", method = "restyle" )]
))
Wert von type Eigentum ist buttonsstandardmäßig. Ändern Sie den Typ in, um eine Dropdown-Liste mit Schaltflächen zu renderndropdown. Eine Box-Ablaufverfolgung wurde dem Figure-Objekt hinzugefügt, bevor das Layout wie oben aktualisiert wurde. Der vollständige Code, der gerendert wirdboxplot und violin plot abhängig von der angeklickten Schaltfläche ist wie folgt -
import plotly.graph_objs as go
fig = go.Figure()
fig.add_trace(go.Box(y = [1140,1460,489,594,502,508,370,200]))
fig.layout.update(
updatemenus = [
go.layout.Updatemenu(
type = "buttons", direction = "left", buttons=list(
[
dict(args = ["type", "box"], label = "Box", method = "restyle"),
dict(args = ["type", "violin"], label = "Violin", method = "restyle")
]
),
pad = {"r": 2, "t": 2},
showactive = True,
x = 0.11,
xanchor = "left",
y = 1.1,
yanchor = "top"
),
]
)
iplot(fig)
Die Ausgabe des Codes ist unten angegeben -
Klicke auf Violin Taste zur Anzeige der entsprechenden Violin plot.
Wie oben erwähnt, Wert von type Geben Sie ein Updatemenu() Methode zugewiesen ist dropdownum die Dropdown-Liste der Schaltflächen anzuzeigen. Die Handlung erscheint wie folgt:
Das updateDie Methode sollte verwendet werden, wenn die Daten- und Layoutabschnitte des Diagramms geändert werden. Das folgende Beispiel zeigt, wie aktualisiert wird und welche Traces angezeigt werden, während gleichzeitig Layoutattribute wie der Diagrammtitel aktualisiert werden. Zwei Streuspuren entsprechendsine and cos wave werden hinzugefügt Figure object. Die Spur mit sichtbarattribute wie True wird auf dem Plot angezeigt und andere Spuren werden ausgeblendet.
import numpy as np
import math #needed for definition of pi
xpoints = np.arange(0, math.pi*2, 0.05)
y1 = np.sin(xpoints)
y2 = np.cos(xpoints)
fig = go.Figure()
# Add Traces
fig.add_trace(
go.Scatter(
x = xpoints, y = y1, name = 'Sine'
)
)
fig.add_trace(
go.Scatter(
x = xpoints, y = y2, name = 'cos'
)
)
fig.layout.update(
updatemenus = [
go.layout.Updatemenu(
type = "buttons", direction = "right", active = 0, x = 0.1, y = 1.2,
buttons = list(
[
dict(
label = "first", method = "update",
args = [{"visible": [True, False]},{"title": "Sine"} ]
),
dict(
label = "second", method = "update",
args = [{"visible": [False, True]},{"title": Cos"}]
)
]
)
)
]
)
iplot(fig)
Anfänglich, Sine curvewird Angezeigt werden. Wenn Sie auf die zweite Schaltfläche klicken,cos trace erscheint.
Beachten Sie, dass chart title aktualisiert auch entsprechend.
Um zu verwenden animate Methode müssen wir eine oder mehrere hinzufügen Frames to the FigureObjekt. Zusammen mit Daten und Layout können Rahmen als Schlüssel in ein Figurenobjekt eingefügt werden. Die Frames-Taste zeigt auf eine Liste von Figuren, von denen jede durchlaufen wird, wenn die Animation ausgelöst wird.
Sie können Schaltflächen hinzufügen, abspielen und anhalten, um die Animation in das Diagramm einzuführen, indem Sie eine hinzufügen updatemenus array zum Layout.
"updatemenus": [{
"type": "buttons", "buttons": [{
"label": "Your Label", "method": "animate", "args": [frames]
}]
}]
Im folgenden Beispiel a scatter curveDie Spur wird zuerst aufgezeichnet. Dann füge hinzuframes Das ist eine Liste von 50 Frame objects, die jeweils a darstellen red markerauf der Kurve. Notiere dass derargs Das Attribut der Schaltfläche ist auf Keine gesetzt, wodurch alle Frames animiert werden.
import numpy as np
t = np.linspace(-1, 1, 100)
x = t + t ** 2
y = t - t ** 2
xm = np.min(x) - 1.5
xM = np.max(x) + 1.5
ym = np.min(y) - 1.5
yM = np.max(y) + 1.5
N = 50
s = np.linspace(-1, 1, N)
#s = np.arange(0, math.pi*2, 0.1)
xx = s + s ** 2
yy = s - s ** 2
fig = go.Figure(
data = [
go.Scatter(x = x, y = y, mode = "lines", line = dict(width = 2, color = "blue")),
go.Scatter(x = x, y = y, mode = "lines", line = dict(width = 2, color = "blue"))
],
layout = go.Layout(
xaxis=dict(range=[xm, xM], autorange=False, zeroline=False),
yaxis=dict(range=[ym, yM], autorange=False, zeroline=False),
title_text="Moving marker on curve",
updatemenus=[
dict(type="buttons", buttons=[dict(label="Play", method="animate", args=[None])])
]
),
frames = [go.Frame(
data = [
go.Scatter(
x = [xx[k]], y = [yy[k]], mode = "markers", marker = dict(
color = "red", size = 10
)
)
]
)
for k in range(N)]
)
iplot(fig)
Die Ausgabe des Codes ist unten angegeben -
Die rote Markierung bewegt sich beim Klicken entlang der Kurve play Taste.