Ich kann nicht herausfinden, warum das Diagramm nicht aktualisiert wird

Daniel

Ich richte eine Plotly-Dash-Website ein, auf der ich Daten aus einigen Domänen zu verschiedenen Zeitpunkten anzeigen möchte. Daher habe ich einen Schieberegler, mit dem Sie entscheiden können, welche Daten zu welchem ​​Zeitpunkt Sie sehen möchten. Das funktioniert schon. Außerdem möchte ich, dass wenn jemand auf einen Punkt klickt, zu jedem Zeitpunkt eine Linie zwischen allen Positionen dieser Domäne angezeigt wird.

Ich habe versucht, eine Aktualisierungsfunktion zu definieren, damit ich die Daten für den Trace mit der Zeile darin aktualisiere. Das Diagramm selbst sieht jedoch nach dem Update nicht anders aus.

# create underlying figure
fig = go.Figure()
for date in file.date.unique():
    f = file.loc[file["date"] == date]

    fig.add_trace(go.Scatter(x = f.x,
                         y = f.y,
                         mode="markers",
                         name = date,
                         hovertext = f.domains,
                         visible = False,
                         marker=dict(
                             color=['#a3a7e4'] * len(f.x),
                             size=[5] * len(f.x)
                         ),
                        ))

# trace of path
dom="xxx"
filt = file.loc[file["domains"] == dom]
x_ = filt.x
y_ = filt.y

fig.add_trace(go.Scatter( 
    x = x_,
    y = y_,
    hovertext= dom,
    name='"'+ dom +'"' + " development path",
    visible=True,
    mode='lines'
    ))

# Create and add slider
steps = []
for i in range(len(fig.data)-1):
    step = dict(
        method="restyle",
        args=["visible", [False] * len(fig.data)],
        label=fig.data[i].name
    )
    step["args"][1][i] = True  # Toggle i'th trace to "visible"
    steps.append(step)

sliders = [dict(
    active=10,
    currentvalue={"prefix": "Date: "},
    pad={"t": 50},
    steps=steps
)]
# create widget from figure
f = go.FigureWidget(data=fig.data, layout=fig.layout)

# create our callback function
def update_point(trace, points, selector):

filter_2 = file[(file["x"] == points.xs[0]) & (file["y"] == 
    points.ys[0])]
domain = filter_2.domains.values[0]
print(domain)
small_df = file[file["domains"] == domain]
fig.data[-1].hovertext = domain
fig.data[-1].name = '"' + domain + '"' + " development path"
fig.data[-1].x = small_df.x.values
fig.data[-1].y = small_df.y.values
fig.update_traces(visible=True, selector=dict(mode="line"))
f = go.FigureWidget(data=fig.data, layout=fig.layout)
f


for i in range(len(fig.data)-1):
    if f.data[i].visible is True:
        f.data[i].on_click(update_point)

f

Ich möchte nur, dass auch das Diagramm aktualisiert wird, nicht nur die zugrunde liegenden Daten.

Chaitanya Bangera

Schauen Sie sich Dash-Rückrufe hier an:

https://dash.plot.ly/getting-started-part-2

Kurz gesagt, Sie müssen Ihren Rückrufen Dekoratoren hinzufügen, die angeben, welche Eingabe den Rückruf auslöst und welches Diagramm bei einem Rückruflauf aktualisiert werden muss. Sie können einen Rückruf nicht programmgesteuert auslösen und erwarten, dass er das Diagramm ändert. Der Rückruf muss meines Wissens von der Benutzeroberfläche kommen.

Z.B:

app.layout = html.Div([
    dcc.Input(id='my-id', value='initial value', type='text'),
    html.Div(id='my-div')
])

@app.callback(
    Output(component_id='my-div', component_property='children'),
    [Input(component_id='my-id', component_property='value')]
)
def update_output_div(input_value):
    return 'You have entered "{}"'.format(input_value)

In diesem Beispiel wird erwartet, dass der Rückruf ausgelöst wird, wenn sich der Wert der Eingabe mit der ID "my-id" ändert, und im Gegenzug ändert sich der Wert des div. Die "Ausgabe" im Dekorator muss Ihr Diagramm sein, wenn Sie einen Rückruf benötigen, um ein Diagramm zu ändern.

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Ich kann nicht herausfinden, warum das Subnetz aktualisiert wird

Ich kann nicht herausfinden, warum TextView nicht auf das SQLite-Ergebnis aktualisiert wird

(FLASK) Ich kann nicht herausfinden, warum meine HTML-Datei nicht aktualisiert/gerendert wird

Ich kann nicht herausfinden, warum die Eingabe nicht mit MobX aktualisiert wird

Ich kann nicht herausfinden, warum onClick den Status nicht aktualisiert

Kann nicht herausfinden, wie das Array aktualisiert wird

Ich kann nicht herausfinden, warum mein Code nicht gerendert wird

Ich kann nicht herausfinden, warum meine Array-Liste nicht mit den von mir angegebenen neuen Werten aktualisiert wird

Das erste Objekt der Arrayliste wird null. Ich kann nicht herausfinden, warum

Ich kann nicht herausfinden, warum in SDL keine Linie gezogen wird

Ich kann nicht herausfinden, warum ConcurrentModificationException ausgelöst wird

Das Programm wiederholt sich - ich kann nicht herausfinden warum

Ich kann nicht herausfinden, warum mein Adapter meine Recycling-Ansicht nicht aktualisiert

Ich kann nicht herausfinden, warum meine Komponente nicht mit dem aktualisierten Status gerendert wird. Obwohl der Status aktualisiert und in der Datenbank widergespiegelt wird

Ich verstehe nicht, warum das nicht funktioniert, und ich kann es selbst nicht herausfinden

Ein Ergebnis, das ich nicht herausfinden kann

Die Reaktionsklasse wird nicht exportiert und ich kann nicht herausfinden, warum?

Ich kann nicht herausfinden, warum meine while-Schleife bei "else" nicht unterbrochen wird.

Die Elektronen-App wird nicht ausgeführt. Ich kann nicht herausfinden warum

Ich kann nicht herausfinden, warum mein Text nicht grün wird

Ich kann nicht herausfinden, warum eine for-Schleife nicht ausgeführt wird

Button wird nicht richtig angeklickt und ich kann nicht herausfinden warum

Das gleiche cURL-Skript funktioniert in dev. Ich kann nicht herausfinden, warum nicht in der Produktion

Warum stimmt mein 'Text' in meinem CSS nicht mit meiner Eingabe überein? Ich kann das nicht herausfinden

Ich kann nicht herausfinden, warum das Dropdown-Menü nicht mit den obigen Texteingabefeldern übereinstimmt

Kann nicht herausfinden, warum der Link nicht in Angular gefunden wird

flatter app wird nicht ausgeführt, kann nicht herausfinden warum

Kann nicht herausfinden, warum das Umschreiben nicht funktioniert

Ich kann nicht herausfinden, warum mein Clearfix nicht funktioniert