Передача имени столбца в функции - PullRequest
2 голосов
/ 05 марта 2019

Привет! В настоящее время я пытаюсь построить график рассеяния на панели инструментов Python, где я могу подключить раскрывающийся список (состоящий из разных имен столбцов) к графику рассеяния.Поэтому, когда я изменяю значение раскрывающегося списка, на диаграмме рассеяния будут отображаться разные значения в зависимости от значения раскрывающегося списка.Тем не менее, моя проблема заключается в том, что имя столбца по сути является строкой, а выпадающий список состоит из словаря этих значений, что затрудняет прохождение.Вот код, который у меня сейчас есть:

html.Div([dcc.Dropdown(
    id='mood',
    options=[
        {'label': 'Positive', 'value': 'Positive'},
        {'label': 'Negative', 'value': 'Negative'},
        {'label': 'Compound', 'value': 'Compound'}],
    value='Compound')], style={'width':'15%'}
    ),
html.Div([
dcc.Graph(id='linear')]),
html.Div([
dcc.Graph(id='linear2')])
])

@app.callback(
dash.dependencies.Output('linear','figure'),
[dash.dependencies.Input('mood','value')])

def update_graph(mood_name):
y=file.get(column) ==mood_name]
scatter=go.scatter(y=y,marker=dict(
    color='rgb(0,191,255)', # code for sky blue 0,191,255
    line=dict(
        color='rgb(8,48,107)',
        width=1.5,
    )),opacity=0.6,name='Sentiment')
layout=go.Layout(xaxis={'title': 'Tweets'},
                         yaxis={'title': 'Polarity'},
                         title= 'Tweets',
                         hovermode='closest')
return {'data':[scatter],
        'layout':[layout]}

Функция графика обновления def - это то, где у меня возникают проблемы при прохождении этих имен столбцов (положительных, отрицательных и составных).Любая помощь будет принята с благодарностью, спасибо!

1 Ответ

0 голосов
/ 06 марта 2019

Возможно, вы ошиблись, когда фильтровали данные по value, предоставленному из dropdown.Код:

from flask import Flask
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
import pandas as pd
import plotly
import plotly.graph_objs as go

server = Flask(__name__)
app = dash.Dash(server=server)
df = pd.DataFrame({"Pos": [4, 5, 7, 8],
                   "Neg": [3, 6, 8, 9],
                   "Compound": [7, 11, 15, 17],
                   "values": [1, 2, 3, 4]})
app.layout = html.Div(
    [
        html.H1("Scatter with dropdown"),
        dcc.Dropdown(
              id='dropdown',
              options=[{'label': 'Pos', 'value': 'Pos'},
                       {'label': 'Neg', 'value': 'Neg'},
                       {'label': 'Compound', 'value': 'Compound'}],
              value='Compound'
          ),
        html.Div(id='scatter'),
          ])


@app.callback(
    Output("scatter", "children"),
    [Input("dropdown", "value")],
)
def change_scatter(value):
    """Change scatter according to dropdown."""
    global df
    dff = df[['values', value]]
    return html.Div(dcc.Graph(
        id='scatter-plot',
        figure={
            'data': [
                {
                    'x': dff['values'],
                    'y': dff[value],
                    'type': 'scatter',
                    # 'text': dff[value],
                    'name': value
                }
            ],
            'layout': {
                'xaxis': {'title': 'Position'},
                'yaxis': {'title': 'Values'},
            }
        }
    ))


if __name__ == "__main__":
    app.run_server(debug=True, port=8888)

Вывод: Scatter with dropdown Надеюсь, этот пример поможет вам найти ошибку

...