【问题标题】:How to create interactive plot in Jupyter Notebook and Python如何在 Jupyter Notebook 和 Python 中创建交互式绘图
【发布时间】:2019-11-14 04:19:11
【问题描述】:

我有以下数据框。

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()

需要注意的是Age是一个数值范围值,而“Smoking history”是一个字符串值。

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

我想让它具有交互性,以便我可以从下拉列表中选择列。

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

** 有没有办法在绘图中使用非数字列?

【问题讨论】:

  • 我有一个交互式饼图解决方案,它使用 ipywidgets import interact, interactive, fixed, interact_manual 导入并使用 update_piechart 函数和 interactive(update_piechart, time=timerange) 调用。基本上它是一个带有时间范围的大滑块和一个显示所选时间范围值的饼图

标签: python plot jupyter-notebook ipywidgets


【解决方案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)

【讨论】:

  • 很棒的提示!谢谢。我也添加了 unstack() 。但是如何使用列名作为标题?
  • 例如,您可以将它们写为情节之前的文本。更好的是,您可以使用 plot 函数的 'title=' 参数。请参阅文档参考pandas.pydata.org/pandas-docs/stable/reference/api/…
猜你喜欢
  • 2016-11-16
  • 1970-01-01
  • 1970-01-01
  • 2022-08-18
  • 2017-10-03
  • 2018-11-18
  • 2018-10-03
  • 2018-04-12
  • 2017-11-03
相关资源
最近更新 更多