我有一个以下数据框。
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来做到这一点?
**有什么方法可以在绘图中使用非数字列?
答案 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)