我使用冰柱图表从层次结构角度获取数据,并使用按钮来调整显示的值。以下是我的代码示例:
df = pd.DataFrame({
'YEAR': ['2023', '2023', '2023', '2023'],
'COMPANY': ['Company A','Company A','Company A','Company A'],
'ORG': ['People', 'People', 'Customer', 'Customer'],
'DEPARTMENT': ['HR', 'HR', 'Marketing', 'Marketing'],
'AREA': ['Reward', 'Benefits', 'Campaigns', 'Insights'],
'Employees': [5, 4, 9, 11],
'Salary Cost' : [80000,75000,113000,140000]
})
figs = {
c: px.icicle(df, path=["COMPANY","ORG", "DEPARTMENT", "AREA"], values=c, color='AREA', height=700)
for c in ["Employees", "Salary Cost"]
}
fig = figs["Employees"]
#Button for FTE and HC
fig.update_layout(
updatemenus=[
{
"buttons": [
{
"label": c, #FTE or HC, needs to match df column names
"method": "restyle",
"args": [
{
"values": [figs[c].data[0].values],
"hovertemplate": figs[c].data[0].hovertemplate,
}
],
}
for c in figs.keys()
]
}
]
)
我希望冰柱图是自上而下而不是从右到左。查看plotly文档,有一个示例,但是这是在graph_objects下,并且并非所有相同的功能都可用。
他们的 docs 中有一个垂直方向的示例:
import plotly.graph_objects as go
import pandas as pd
df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/96c0bd/sunburst-coffee-flavors-complete.csv')
fig = go.Figure(
go.Icicle(
ids = df.ids,
labels = df.labels,
parents = df.parents,
root_color="lightgrey",
tiling = dict(
orientation='v',
flip='y'
)
)
)
fig.update_layout(margin = dict(t=50, l=25, r=25, b=25))
fig.show()