Seite 1 von 1

Kreisdiagram mit dash, app und dcc

Verfasst: Mittwoch 18. Januar 2023, 17:09
von Bal00.de
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

Re: Kreisdiagram mit dash, app und dcc

Verfasst: Freitag 20. Januar 2023, 15:22
von Bal00.de
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ß