我正在使用Plotly Dash
构建具有3个跟踪值的堆叠条形图。
我正在尝试访问跟踪值的状态,以便可以过滤数据框并将结果DF
传递回绘图,而不是在取消选择时简单地隐藏跟踪。
例如,我有一个数据框:
Item Status Value
1 First 2000
1 Second 3490
1 Third 542
2 First 641
2 Second 564
3 First 10
我的踪迹是与线性过程有关的3个值(第一,第二,第三),其中每个值都是标记项目进展的状态。
我的目的是能够从进度中进一步选择状态,以便仅绘制前进到特定步骤的那些项。
当我在跟踪图例中选择更高级的状态时,我绘制的x值应该下降,因为到目前为止,即使它们都共享大多数状态,进展也较少。
我能想到的唯一解决方案是为每个跟踪值创建复选框,并在回调中使用这些输入,但这似乎对内置的选择/取消选择跟踪功能是多余的。
答案 0 :(得分:0)
您正在寻找类似的东西吗?
代码:
import dash
from dash.dependencies import Output, Input
import dash_core_components as dcc
import dash_html_components as html
import plotly
import plotly.graph_objs as go
import pandas as pd
app = dash.Dash(__name__)
df = pd.DataFrame({'Item': [1, 1, 1, 2, 2, 3],
'Status': ["First", "Second", "Third",
"First", "Second", "First"],
'Value': [2000, 3490, 542, 641, 564, 10]})
colors = {
'background': '#111111',
'background2': '#FF0',
'text': '#7FDBFF'
}
df1 = df.loc[df["Status"] == "First"]
df2 = df.loc[df["Status"] == "Second"]
df3 = df.loc[df["Status"] == "Third"]
trace1 = go.Bar(
x=df1["Item"],
y=df1["Value"],
name='First',
)
trace2 = go.Bar(
x=df2["Item"],
y=df2["Value"],
name='Second',
)
trace3 = go.Bar(
x=df3["Item"],
y=df3["Value"],
name='Third',
)
app.layout = html.Div(children=[
html.Div([
html.H5('Your Plot'),
dcc.Graph(
id='cx1',
figure=go.Figure(data=[trace1, trace2, trace3],
layout=go.Layout(barmode='stack')))],)])
if __name__ == '__main__':
app.run_server(debug=True)