Python, Dash, импорт CSV и генерация графиков с помощью Pandas Dataframe - PullRequest
0 голосов
/ 19 сентября 2019

Я бьюсь головой об стену, пытаясь разобраться с проблемой, возникшей у меня с Python Dash.Я пытаюсь выполнить простую операцию: импортировать CSV-файл, создать точечную диаграмму с данными и использовать раскрывающиеся меню для выбора данных X и Y (через имена столбцов данных).Все работает хорошо, но вывод графика отображает только данные, связанные с первым индексом в кадре данных.Любая помощь будет очень высоко ценится.Код ниже и скриншот ниже: Заголовок кадра данных Вывод приложения Dash

import base64
import datetime
import io

import dash
from dash.dependencies import Input, Output, State
import dash_core_components as dcc
import dash_html_components as html

import pandas as pd
import numpy as np

import chart_studio.plotly as py
import plotly.graph_objects as go
import plotly.io as pio
import plotly.express as px
pio.templates.default = "plotly_white"

external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']

df=  pd.read_csv(r'C:\Users\ajinn\Desktop\stock.csv')

app = dash.Dash()

app = dash.Dash(__name__, external_stylesheets=external_stylesheets)

app.layout= html.Div(children=[

        html.H1(children='Data Table Charter',style={'textAlign': 'center'}),
        html.Div(children='Data Charting Tool for CSV Files',style={'textAlign': 'center'}),

        html.Div([
            html.Label("Select X Series Data"),                    
            dcc.Dropdown(id='x-data',
                         options=[{'label': i, 'value': i} for i in list(df)],
                         multi=False
            )
            ],
            style={'display':'inline-block','padding-left': '0px'}
            ), 
        html.Div([
            html.Label("Select Y Series Data"),                    
            dcc.Dropdown(id='y-data',
                         options=[{'label': i, 'value': i} for i in list(df)],
                         multi=True
            )
            ],
            style={'display':'inline-block','padding-left': '100px'}
        ),

        html.Div(id='graph-data')          
])



@app.callback(
    Output(component_id='graph-data',component_property='children'),
    [Input(component_id='x-data',component_property='value'),
     Input(component_id='y-data',component_property='value')    
    ]    
)


def update_graph(xdata,ydata):
    return dcc.Graph(
               figure=go.Figure(
                   data=go.Scatter(x=df[xdata],y=df[ydata],mode='lines+markers')
               )
    )

if __name__ == '__main__':
    app.run_server(port=3337)


...