如何在Jupyter Notebook和Python中创建交互式绘图

时间:2019-07-03 13:00:42

标签: python plot jupyter-notebook ipywidgets

我有一个以下数据框。

CustID| Age |Gender|Smoking_history |Alcohol_history

1 |18-24| M | Non-smoker | <21 units per week

2 |43-48| F | Non-smoker | <21 units per week

3 |37-42| M | Unknown | <21 units per week

4 |18-24| F | Unknown | Unknown

5 |43-48| M | Previous smoker | <21 units per week

我创建了条形图并使用了以下代码:

  

df.groupby(['吸烟   history','Age'])。size()。unstack()。plot(kind ='bar',stacked = True)   plt.show()

请注意,年龄是数字范围值,“吸烟史”是字符串值。

它在Jupyter Notebook中创建堆积的条形图,并根据吸烟史显示不同年龄段的人数。

我要使其具有交互性,以便可以从下拉列表中选择列。

如何在Jupyter Notebook中使用ipywidgets来做到这一点?

**有什么方法可以在绘图中使用非数字列?

1 个答案:

答案 0 :(得分:1)

实际上,创建它并不难。首先,您必须导入所有必需的窗口小部件库。库窗口小部件保存ui元素的定义。每次您在元素上触发事件时,交互式库都会调用您的自定义函数-在本例中是选择其他列。每次调用该函数时,我们都将返回一个新图。请注意,您只应从函数内的数据集中读取数据。对其进行更改可能会在以后的细胞中引入副作用。

import ipywidgets as widgets
from ipywidgets import interact, interactive, fixed, interact_manual
drop_down=widgets.Dropdown(
    options=data2.columns.values,
    value='Age',
    description='Column:',
    disabled=False,
)

def update_barchart(columns):
    return data2.groupby(columns).size().plot(kind='bar',stacked=True)

interactive(update_barchart, columns=drop_down)