我正在尝试将过滤器选择添加到绘图栏。以下是工作代码:
import plotly.express as px
import plotly.graph_objects as go
# from plotly.subplots import make_subplots
import plotly as py
import pandas as pd
from plotly import tools
d = {'Mkt_cd': ['Mkt1','Mkt2','Mkt3','Mkt4','Mkt5','Mkt1','Mkt2','Mkt3','Mkt4','Mkt5'],
'Category': ['Apple','Orange','Grape','Mango','Orange','Mango','Apple','Grape','Apple','Orange'],
'CategoryKey': ['Mkt1Apple','Mkt2Orange','Mkt3Grape','Mkt4Mango','Mkt5Orange','Mkt1Mango','Mkt2Apple','Mkt3Grape','Mkt4Apple','Mkt5Orange'],
'Current': [15,9,20,10,20,8,10,21,18,14],
'Goal': [50,35,21,44,20,24,14,29,28,19],
'Q1': [30,25,11,34,10,14,4,19,8,9]
}
dataset = pd.DataFrame(d)
grouped = dataset.groupby('Category', as_index=False).sum()
data = grouped.to_dict(orient='list')
v_cat = grouped['Category'].tolist()
v_current = grouped['Current']
v_goal = grouped['Goal']
v_q1 = grouped['Q1']
fig = go.Figure()
fig.add_trace(go.Bar(
x=v_current,
y=v_cat,
marker_color="#ff0000",
orientation='h',
width=0.25
))
for i, g in enumerate(v_goal):
a=fig.add_shape(type="rect",
x0=g+0.5, y0=v_cat[i], x1=g, y1=v_cat[i],
line=dict(color='#636EFA', width = 58))
for i, g in enumerate(v_q1):
b=fig.add_shape(type="rect",
x0=g+0.5, y0=v_cat[i], x1=g, y1=v_cat[i],
line=dict(color='#636EFA', width = 58))
#Adding Buttons here, first for Mkt_cd
buttons = []
groups = dataset['Mkt_cd'].unique().tolist()
frame={}
for i in groups:
frame[str(i)]=dataset[dataset['Mkt_cd']==i]
for k in frame.keys():
buttons.append(dict(method='restyle',label=k,
args=[{'y':[frame[str(k)]['Mkt_cd'].values],
'type':'bar'}, [0]],
)
)
updatemenu = []
your_menu = dict()
updatemenu.append(your_menu)
updatemenu[0]['buttons'] = buttons
updatemenu[0]['direction'] = 'down'
updatemenu[0]['showactive'] = True
fig.update_layout(barmode='relative', updatemenus=updatemenu)
fig.show()
我的数据集在密钥级别处于未聚合状态。我在类别级别将其分组为Grouped。我想添加两个过滤器:
1)Mkt_Cd过滤器。用户应该能够选择他们的市场,看看他们的类别在他们的市场上做得如何。理想情况下,这应该是一个多选过滤器,您可以在其中添加一组市场,并查看数据的外观,它还应该过滤目标和第一季度数据
第二)目标过滤器。用户应该能够选择他们想要查看的目标跟踪(现在是目标或第一季度,但将来也是第二季度、第三季度)。同样,理想的情况是多选民
大概是这样的:
我可以添加一个笨重的Mkt_cd过滤器,但正如你所看到的,它坏了:p,并且无法重置视图。我甚至没有尝试尝试目标过滤器!任何帮助都将不胜感激
我在使用JupyterLab之前的贡献的基础上提出了一个建议。你可能会发现它有点乱。但是如果这是你在概念上寻找的,那么我们可以把它清理干净。我们还重写了整个过程,使用“纯”破折号,而不是JupyterDash。下面的代码段将生成下图,其中包含:
['Goal', 'Q1
]以下是几种不同选择组合的场景:
图1
图2
图3
JupyterDash
的完整代码附录:精心组织的控件和图形
这很容易被作为一个问题单独提出,但为了完整起见,下面的完整片段将生成以下Dash应用程序,其控件整齐地排列在图的左侧。到目前为止,我知道的唯一可靠方法是通过引导组件。这在这方面引入了一些新概念。但这是我现在必须提供的。但仍有改进的余地。如som空气控制头和选项之间。但如果这是你可以使用的东西,我们可以解决这个问题
boostrap组件的完整代码段
相关问题 更多 >
编程相关推荐