Plotly Ipywidgets -交互式-访问图形输出的交叉样本



我是plotly和ipywidgets的新手

我想创建一个fig,它有两个控制器板,称为control1control2。其中,control1是一组允许我修改数据的小部件。然后在control2中,我想访问control1中的数据,以便进一步分析和显示。

对此的简单解决方案是将control1control2组合为单个control板。但是,我有很多滤镜,这使得它看起来不太好,所以我想把它们分开。

我用一个简单的数据来说明:

comp  year  val1  val2
0     a  2000    89    19
1     a  2001    47    91
2     a  2002    50    25
3     a  2003    63     5
4     a  2004    40    28
5     a  2005    79    53
6     b  2000    26    57
7     b  2001    19    75
8     b  2002    72    89
9     b  2003    74     7
10    b  2004    49    11
11    c  2000    35    62
12    c  2001    50    23
13    c  2002    32    40
14    c  2003    83    60
15    d  2000    91    71
16    d  2001    61    64
17    d  2002    29    80
18    d  2003   100    48
19    d  2004    38    41
20    d  2005    75    38

创建图形:

import ipywidgets as widgets
import pandas as pd
import plotly.graph_objects as go
# Import data
df = pd.read_csv('test_interactive.csv')
# Creating figure
data = go.Scattergl(x=df['val1'],
y=df['val2'],
mode='markers')
layout = go.Layout(title='Some Title')
fig = go.FigureWidget(data=data, layout=layout)
# Create `control1` board:
def graph_filter(comp, year):
# filter by 'comp' and 'year':
tem = df[(df['comp'] == comp) & (df['year'] == year)]

fig.data[0].x = tem['val1']
fig.data[0].y = tem['val2']

control1 = widgets.interactive(
graph_filter,
comp=widgets.Dropdown(
options=df['comp'].unique(),
value='a',
disabeled=False,
description='Select Comp'),
year=widgets.Dropdown(
options=df['year'].unique(),
value=2000,
description='Select Year',
disabeled=False)
)

现在我想创建另一个control2,我可以在control1之后访问数据过滤器进行进一步分析,但我不知道如何。

control2 = ???

谢谢

我认为解决方案是简单地在自定义函数中设置变量修改数据框架为全局变量。那是我现在能想到的一个快速的解决办法。

def graph_filter(comp, year):
# filter by 'comp' and 'year':
global tem
tem = df[(df['comp'] == comp) & (df['year'] == year)]

相关内容

  • 没有找到相关文章

最新更新