Сюжет Python с интерактивным выпадающим меню - PullRequest
0 голосов
/ 21 мая 2019

Я хочу создать на Python график стоимости акций, где тикер основан на выпадающем меню.Раскрывающееся меню основано на заголовках столбцов моего кадра данных панд, которые содержат скорректированные цены закрытия каждой компании.Фрейм данных data_df содержит мои данные вместе с заголовками столбцов, которые мне нужны в выпадающем меню.Если я запускаю свой plot_w без определения двух аргументов, он может работать.Он не может работать, когда я передаю dataframe, ticker в определение.Моя цель состоит в том, чтобы изменить сюжет, когда я изменяю тикер в выпадающем списке.Мой текущий код:

import matplotlib.pyplot as plt
import ipywidgets as widgets
import pandas as pd


def plot_w(dataframe,ticker):

    I = data_df.columns == ticker

    print(data_df.loc[:, I].head(10))
    #Code fails in the line below. 
    df = dataframe.loc[:, I].plot(x=dataframe.index, y=dataframe[ticker], style=['-bo'], figsize=(8, 5), fontsize=11, legend='False')

    plt.plot(df[ticker], label = ticker)
    #plt.plot(df["AMZN"], label = "Amazon")

    plt.legend(loc = "upper center", shadow = True, fontsize = "small", facecolor = "black")

    plt.show()

widgets.interact(plot_w,
    dataframe = widgets.fixed(data_df),
    ticker = widgets.Dropdown(
            options=data_df.columns,
            value='ATVI',
            description='Company ticker:',
            disabled=False,
        )
)

Кадр данных определен ранее в коде.Фрагмент кадра данных data_df.И фрагмент моей ошибки error

1 Ответ

0 голосов
/ 21 мая 2019

Я решил это, сбросив индекс моего фрейма данных и изменив строку, в которой произошла ошибка, на

plt = dataframe.loc[:, ['Date',ticker]].plot(x='Date', y=ticker, style=['-bo'], figsize=(8, 5), fontsize=11, legend='False')

...