添加下拉菜单以绘制树状图
Posted
技术标签:
【中文标题】添加下拉菜单以绘制树状图【英文标题】:Add dropdown menu to plotly express treemap 【发布时间】:2021-01-13 23:02:22 【问题描述】:我目前正在尝试向我的树状图添加一个下拉菜单
我正在使用的代码:
import pandas as pd
import plotly.express as px
fig = px.treemap(df,
path=['RuleName','RuleNumber','ParaInvolved',"CreationP","MAjP"],
color='Somme',
hover_data=["RuleDecision","RuleMAJ"],
color_continuous_scale='RdBu')
fig.show()
我面临的问题是,在我的“RuleName”列中,我有 151 个不同的值(但总共 1300 行),这就是为什么我试图添加一个按钮,让自己选择我想要的 RuleName 值绘制我的树形图。现在我正在使用一种野蛮的方法,包括按每个 RuleName 值过滤我的数据框,这导致我得到 151 个不同的树形图。我在该网站或任何其他网站上找不到任何解决方案。
感谢您的帮助
【问题讨论】:
您好,欢迎您。如果您可以查看how-to-ask,然后尝试生成mcve,那就太好了。 仅供参考:彻底回答问题非常耗时。 如果您的问题得到解决,请通过接受最适合您的需求的解决方案表示感谢。 接受检查位于答案左上角的向上/向下箭头下方。如果出现更好的解决方案,则可以接受新的解决方案。您还可以使用向上或向下箭头对答案的质量/有用性进行投票。 如果解决方案不能回答问题,请发表评论。 What should I do when someone answers my question?。谢谢 【参考方案1】:在这里,我基本上使用与 answer 相同的逻辑,但我使用 px.treemap(...).data[0]
而不是 go
来生成跟踪。
import plotly.express as px
import plotly.graph_objects as go
df = px.data.tips()
# We have a list for every day
# In your case will be gropuby('RuleName')
# here for every element d
# d[0] is the name(key) and d[1] is the dataframe
dfs = list(df.groupby("day"))
first_title = dfs[0][0]
traces = []
buttons = []
for i,d in enumerate(dfs):
visible = [False] * len(dfs)
visible[i] = True
name = d[0]
traces.append(
px.treemap(d[1],
path=['day', 'time', 'sex'],
values='total_bill').update_traces(visible=True if i==0 else False).data[0]
)
buttons.append(dict(label=name,
method="update",
args=["visible":visible,
"title":f"name"]))
updatemenus = ['active':0, "buttons":buttons]
fig = go.Figure(data=traces,
layout=dict(updatemenus=updatemenus))
fig.update_layout(title=first_title, title_x=0.5)
fig.show()
【讨论】:
非常感谢您的帮助,这正是我想要的!以上是关于添加下拉菜单以绘制树状图的主要内容,如果未能解决你的问题,请参考以下文章