如何在使用pandas(ipython notebook)的袖扣创建的条形图中添加下拉框和搜索框?

时间:2017-02-27 14:20:58

标签: python-2.7 pandas ipython-notebook plotly

我使用plotly的袖扣绘制了交互式条形图(使用pandas系列)。在离线模式下

以下是我用于绘图的代码:

cf.go_offline()  ## Use plotly in offline mode

df.iplot(kind='bar', xTitle = 'roles',yTitle='count', title='Bar Plot:', filename='cufflinks/categorical-bar-chart')

此处 df 是我的系列,角色是我的索引。(x轴)

             Priority   Year    Avg_in_hrs         Total_in_Hrs
Role                        
 A           Medium     2015       34.4              34
 B           Low        2014       33.55             123
 C           High       2014       3                 4566
 D           Low        2015       12                3666

现在我想为我的x轴标签添加下拉列表和搜索框,例如角色,这是我的pandas dataframe列有很多值,这样我就可以搜索并只查看该图的情节特别的角色。我该如何添加?

此外,如何与其他人共享这些交互式图表,例如使用Web应用程序,以便我可以保持交互性?

由于

1 个答案:

答案 0 :(得分:1)

您可以移动yaxis range,具体取决于所选的下拉菜单,即,如果用户选择A,则仅显示A特定的范围。

代码定义了每个index的下拉条目和一个重置图表的下拉条目。

import pandas as pd
import cufflinks as cf
cf.go_offline()

roles = 'ABCDE'
prios = ['Medium', 'Low', 'High', 'Low', 'High']
years = [2015, 2014, 2014, 2015, 2014]
avgs = [34.4, 33.55, 3, 12, 15]
total_hours = [34, 123, 4566, 3666, 4000]

data = dict()
data['Prio'] = prios
data['Year'] = years
data['average'] = avgs
data['hours'] = total_hours

df = pd.DataFrame(data)
df.index = list(roles)
df.index.names = ['Role']

buttons = list()
offset = -0.5
for r in roles:
    buttons.append(dict(
        args=['xaxis.range', [offset, offset + 1]],
        label=r,
        method='relayout'  
    ))
    offset += 1
buttons.append(dict(
    args=['xaxis.range', [-0.5, offset]],
    label='Reset',
    method='relayout'  
))
layout = dict(updatemenus=list([
        dict(
            x=-0.05,
            y=0.8,
            buttons=buttons,
            yanchor='top'
        )
    ])
)
df.iplot(kind='bar', xTitle = 'roles',yTitle='count', title='Bar Plot:', filename='cufflinks/categorical-bar-chart', layout=layout)