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
我正在尝试将自定义数据添加到树状图视觉对象,但无法使自定义数据与正确的类别对齐。这是我目前所拥有的:
如您所见,“名称”与标签(右上角)不匹配。 查看 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