Plotly Treemap 自定义数据未与 labels/ids 对齐

Plotly Treemap Customdata not aligned with labels/ids

我正在尝试将自定义数据添加到树状图视觉对象,但无法使自定义数据与正确的类别对齐。这是我目前所拥有的:

如您所见,“名称”与标签(右上角)不匹配。 查看 fig.data[0].labels 和 fig.data[0].customdata 我可以看到它们的顺序不同,但我不确定如何解决这个问题。

感谢您的帮助。

df = pd.read_excel(this_dir/'Clean Tech'/FILE,
              sheet_name=0,
              skiprows=1)
df_plot = df.groupby(['Category','Sub-Category','Company']).size().reset_index()
df_plot.rename(columns={0:"Count"},inplace=True)

df_plot.fillna('TBD', inplace=True)

df_plot.sort_values(by=['Category','Sub-Category','Company'], inplace=True)

fig = px.treemap(df_plot,
             values='Count',
             color='Company',
             path=['Category','Sub-Category','Company'],
             color_discrete_map={'Arolytics': 'navy', 
                                 'Wastewater Treatment': 'lightblue'}, #discrete color assignment
             color_discrete_sequence =['lightgray', 'lightblue', 'teal'],
             template = 'plotly_white',
             title = 'The CleanTech Universe',
             branchvalues="total"
           )

fig.update_traces(root_color='white')

fig.update_layout(font_family='Trebuchet',
              margin = dict(t=50, l=25, r=25, b=25),
             width=1200,
             height=700,
             uniformtext=dict(minsize=10))


companies = df_plot['Company'].tolist()
categories = df_plot['Category'].tolist()

fig.data[0].customdata = np.column_stack([categories, companies,])
fig.data[0].texttemplate = "%{label}<br>%{value}<br>%{customdata[0]}<br>%{customdata[2]}<br>"



fig.show()
  • 使用 plotly 从数据框创建树图的示例,因为我不能暗示你的数据是什么
  • 使用 Plotly Express 填充 customdata 的最简单方法是使用 hover_data 争论
  • 那么这是一个简单的例子,改变texttemplate
import plotly.express as px
df = px.data.tips()
fig = px.treemap(df, path=[px.Constant("all"), 'day', 'time', 'sex'], values='total_bill', hover_data=["sex","smoker","time"])
fig.update_traces(root_color="lightgrey")
fig.update_layout(margin = dict(t=50, l=25, r=25, b=25))
fig.data[0].texttemplate = "%{label}<br>%{value}<br>%{customdata[0]}<br>%{customdata[2]}<br>"
fig