Kreisdiagram mit dash, app und dcc

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Bal00.de
User
Beiträge: 2
Registriert: Mittwoch 18. Januar 2023, 16:25

Hallo

seit Stunden sitze ich nun vor dem selben Problem und komme leider nicht weiter ...... :?

Ich möchte ein einfaches Kreisdiagram, das abrufbar im Lokalen Netzwerk von allen Teilnehmern.
Leider sind alle Beispiele, welche ich gefunden habe, entweder mit graph.show() <-- dann geht das leider nicht übers netzwerk
oder sind mit "callback"

den code von der offiziellen Seite

Code: Alles auswählen

from dash import dcc

dcc.Graph(
    figure={
        'data': [
            {'x': [1, 2, 3], 'y': [4, 1, 2], 'type': 'bar', 'name': 'SF'},
            {'x': [1, 2, 3], 'y': [2, 4, 5], 'type': 'bar', 'name': u'Montréal'},
        ],
        'layout': {
            'title': 'Dash Data Visualization'
        }
    }
)


gibt mir leider kein Ergebnis aus ( bzw. ich finde es nicht, läuft ohne Fehler)

den Code soweit abgeändert, das er alle Funktionen enthalten sollte, ( läuft ohne Fehler, Verbindung ist da, " Anzeige" wird ausgegeben)

Code: Alles auswählen

from dash import dcc , html
import dash


app = dash.Dash(__name__)


app.layout = html.Div([
        html.H4('Anzeige'),
        dcc.Graph(id="graph"),


])

dcc.Graph(
        figure={
        'data': [
        {'value': [1500], 'type': 'pie', 'name': 'Mom'},
        {'value': [4500], 'type': 'pie', 'name': 'Max'},
        ],
        'layout': {
            'title': 'Aktuell'
         }
    }
)



if __name__ == '__main__':
    app.run_server(host="192.168.178.26", port=8070, debug=True)


eigentlich hätte ich erwartet, das ich jetzt, mit Aufruf im Chrome : 192.168.178.26:8070 ein Kreisdiagram zu sehen bekomme
----> Ziel ist erreichbar, ohne Fehler, Aufbau nur ohne Kreisdiagram ( LinienChart vorbereitet?)

eventuell kann mir ja einer der Profis hier verraten warum meine Erwartungen nicht erfüllt werden.

Zu meiner Person: kein " Programmierer " Hintergrund ( learning by try and error )

Besten Dank

Gruß
Peter

Fernziel wäre: die 1500 sollen aus einer .txt Datei mit 1 Eintrag ausgelesen (pandas) werden alle 6sec im loop, Das Kreisdiagramm soll "grün für 1500" und "rot für 4500" dargestellt werden
Bal00.de
User
Beiträge: 2
Registriert: Mittwoch 18. Januar 2023, 16:25

Lösung inkl. .txt einlesen

Code: Alles auswählen

import dash
from dash import dcc
from dash import html
from dash.dependencies import Input, Output
import plotly.graph_objs as go


labels = ['Mom','Max']


with open("C:\\Simon\\23Ueber.txt", mode="r") as f:
    fl = f.readline()
u=(fl)
j=int(u)
n = [j, 4500]
values=[j, 4500] 

# Initialize the dash app
app = dash.Dash()

app.layout = html.Div([
    dcc.Graph(id='live-graph', animate=True,responsive=True),
    dcc.Interval(id="update_value"), #noch ohne funktion
    dcc.Interval(
        id='graph-update',
        interval=1000,
        n_intervals=0
    ),
])

# Define the callback function
@app.callback(Output('live-graph', 'figure'), 
                     [Input('graph-update', 'n_intervals')])
                     #[Input('graph-update', 'n_intervals')])

def update_graph(n):

                            
                            
                            
    fig = go.Figure(data=[go.Pie(labels=labels, values=values),])
                            
    # Darstellung Kosmetik Anfang                       
    fig.update_layout(paper_bgcolor="#000000")
    fig.update_layout(plot_bgcolor="#fcf8f8")
    fig.update_layout(showlegend=False)
    fig.update_layout(width=1200)
    fig.update_layout(height=580)
    fig.update_layout(legend_xanchor="left")
    fig.update_layout(title_xanchor="left")
    fig.update_layout(title_text="Anzeige 1")
    fig.update_layout(title_font_color="white")
    fig.update_layout(title_font_size=50)
    fig.update_layout(title_x=0.38)
    fig.update_layout(title_y=0.92)
     # Darstellung Kosmetik Ende                       
                            
    return go.Figure(data=fig)
      
if __name__ == '__main__':
    app.run_server(host="192.168.178.26", port=8050, debug=True)

fehlt noch das man die "with open .... " in die " Aktualisierung kommt ggf. kommt da ein bisschen input ( verschiedene Versuche scheiterten ...)


gruß
Antworten