【问题标题】:"KeyError: 'outputs_list' " in using plotly dash for showing pie chart“KeyError: 'outputs_list'” 在使用 plotly dash 显示饼图
【发布时间】:2021-06-17 18:36:53
【问题描述】:

我正在尝试使用 plotly dash 在我的网络应用程序上显示饼图,但使用 @app.callback 显示以下错误

Traceback (most recent call last):
File "D:\PRESONAL DATA\FROSK CODING\untitled3.py", line 84, in <module>
 main()

File "D:\PRESONAL DATA\FROSK CODING\untitled3.py", line 72, in main
pie_chart()

File "C:\Users\HP\anaconda3\lib\site-packages\dash\dash.py", line 1006, in add_context
output_spec = kwargs.pop("outputs_list")

KeyError: 'outputs_list'

我尝试了一切无法理解该怎么做 这是代码:-

project_name = None
bs = 'https://cdn.jsdelivr.net/npm/bootswatch@4.5.2/dist/slate/bootstrap.min.css'
app = dash.Dash(external_stylesheets=[bs], suppress_callback_exceptions=True)

# Defining My Functions
def load_model():
     global scrappedReviews
     scrappedReviews = pd.read_csv('balanced_reviews.csv')

     global pickle_model
     file = open("model_pickle.pkl", 'rb') 
     pickle_model = pickle.load(file)

     global vocab
     file = open("vocab_pickle.pkl", 'rb') 
     vocab = pickle.load(file)



def check_review(reviewText):


    transformer = TfidfTransformer()
    loaded_vec = CountVectorizer(decode_error="replace",vocabulary=vocab)
    vectorised_review = transformer.fit_transform(loaded_vec.fit_transform([reviewText]))

    return pickle_model.predict(vectorised_review)

def open_browser():
    webbrowser.open_new('http://127.0.0.1:8050/')

def create_app_ui():
    main_layout = html.Div(
        [
        html.H1(id='main_title', children='Chech Emotions'),

        html.Div(
            dcc.Graph(id='graph')
        ),

        dbc.Input(
            id='textarea_review',
            placeholder = 'Enter the review here....',
            type = "text",
            style = {'width':'50%', 'height':50}
        ),

        html.H1(id='result', children=None)
            ]         
            )

return main_layout


@app.callback(
    Output('graph', 'figure')
)
def pie_chart():

    df = pd.read_csv('prediction.csv')
    piechart = go.pie(
            data_frame=dff,
            values='status',
            names='predictions'
           )

return piechart


@app.callback(
    Output('result',  'children' ),
    [
    Input('textarea_review', 'value' )
    ]
)
def update_app_ui(textarea_value):
    print('Data Type of ', str(type(textarea_value)))
    print('Value = ', str(textarea_value) )

    response = check_review (textarea_value)
    print('response = ', response)

    if (response[0] == 0):
        result1 = 'Negative'
    elif  (response[0] == 1):
        result1 = 'Positive'
    else:
        result1 = 'Unknown'
    
return result1

# Main Function to control the Flow of your Project
def main():
    print("Start of my project")

    load_model()
    open_browser()

    
    global project_name
    global scrappedReviews
    global app


    project_name = "Sentiment Analysis with Insights"

    app.title = project_name
    pie_chart()
    app.layout = create_app_ui()
    app.run_server()


    print("End of my project")
    project_name = None
    scrappedReviews = None
    app = None

# Calling the main function 
if __name__ == '__main__':
    main()

prediction.csv 包含 2 列预测 = {0, 1}*4520 和状态 = {'Positive', 'Negative'}*4520 任何指导肯定会有所帮助

【问题讨论】:

    标签: python-3.x pandas dataframe plotly-dash


    【解决方案1】:

    此回调定义错误:

    @app.callback(
        Output('graph', 'figure')
    )
    def pie_chart():
    

    您还需要有输入。例如:

    @app.callback(
        Output('graph', 'figure'),
        [Input('foo', 'bar')]
    )
    def pie_chart():
    

    【讨论】:

    • 但是如果我在回调中定义输入,我必须从我的应用程序的某个地方获取输入......但我没有接受任何输入,只是想在我的 csv 上显示信息饼...... .....我没有应用任何栏或下拉菜单
    • 如果没有输入,则不需要回调。只需将该代码直接放在布局中即可。
    猜你喜欢
    • 2022-01-06
    • 2021-08-02
    • 2019-06-25
    • 2022-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 2022-08-14
    相关资源
    最近更新 更多