我正在尝试重新设计一个通过 python django 配置的 plotly pie(标签、标记、值)。但是我无法正确地做到这一点——馅饼没有采用这些值。 我希望通过图例中的新值(不要惊讶:下面的示例具有相同的值)、新颜色和标签来更新饼图。但它的表现就像饼图没有改变或值设置不正确。
我已经查看了实时生成的 javascript 代码,并将其与 plotly 提供的示例进行了比较,但我没有看到任何差异。我的代码目前是:
layout = go.Layout(
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)',
font_color="white",
legend=dict(
orientation="v",
yanchor="bottom",
y=0.05,
xanchor="left",
x=1.05,
traceorder='reversed'
),
height=300,
margin=dict(l=2, r=2, t=1, b=1),
)
...
fig = go.Figure(go.Pie(labels=['Automatic', 'Error'], values=[13,11],
marker=dict(colors=['#000000','#555555']), sort=False), layout)
fig.update_traces(textposition='inside',textinfo='value')
fig.update_layout(uniformtext_minsize=12, uniformtext_mode='hide')
button_layer_1_height = 1.08
fig.update_layout(
updatemenus=[
dict(
buttons=list([
dict(
args=[
{'labels': ['test1', 'test2']},
{'marker': dict(colors=['#999999', '#222222'])},
{'values': [23,1]}
],
label='firstButton',
method="restyle"
),
dict(
args=[
{'labels': ['test3', 'test4']},
{'marker': dict(colors=['#333333', '#666666'])},
{'values': [10,14]}
],
label='SecondButton',
method="restyle",
),
]),
direction="down",
pad={"r": 10, "t": 10},
showactive=True,
x=0.1,
xanchor="left",
y=button_layer_1_height,
yanchor="top",
),
]
)
导致javascript:
"updatemenus":[{"buttons":[
{"args":[{"labels":["test1", "test2"]},{"marker":{"colors":["#999999", "#222222"]}},{"values":[23,1]}}],"label":"FirstButton","method":"restyle"},
{"args":[{"labels":["test3", "test4"]},{"marker":{"colors":["#333333", "#666666"]}},{"values":[10,14]}}],"label":"SecondButton","method":"restyle"}],
"direction":"down","pad":{"r":10,"t":10},"showactive":true,"x":0.1,"xanchor":"left","y":1.08,"yanchor":"top"}]}, {"responsive": true} ) };
但是点击按钮后,它没有更新(饼图的值和颜色没有改变,标签设置为“0”和“1”):
解决方案
按钮我们错了(忘了方括号,一个括号中的参数):
buttons=list([
dict(
args=[
{'labels': ]['test1', 'test2']],
'marker': dict(colors=]['#999999', '#222222']]),
'values': ][23,1]]}
],
label='firstButton',
method="restyle"
),
dict(
args=[
{'labels': [['test3', 'test4']],
'marker': dict(colors=[['#333333', '#666666']]),
'values': [[10,14]]}
],
label='SecondButton',
method="restyle",
),
]),