带有交互式下拉菜单的Python图

时间:2019-05-21 09:11:08

标签: python pandas matplotlib widget ipython

我想创建一个股票价值的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 :(得分:0)

我通过重置数据帧的索引并将错误发生的行更改为

来解决了该问题
plt = dataframe.loc[:, ['Date',ticker]].plot(x='Date', y=ticker, style=['-bo'], figsize=(8, 5), fontsize=11, legend='False')