Как добавить счетчик и сумму для секторов в графической древовидной карте?
Текущий результат (без счётчика, без суммы):
«Азия», «Африка».
Идеальный результат (с COUNT и SUM после имени):
"Азия 2 страны, 41 мм", "Африка 2 страны, 37 мм"
Ничего не нашел в документах и на Stack Overflow.
Код
import pandas as pd
import plotly.express as px
data = {'Category':['Asia', 'Asia', 'Africa', 'Africa'],
'Name':['Country 1', 'Country 2', 'Country 3', 'Country 4'],
'Amount':[20, 21, 19, 18]}
df = pd.DataFrame(data)
fig = px.treemap(df,
path=['Category','Name'],
values='Amount')
fig.update_traces(textinfo='value')
fig.show()
Предпочтительно, я хотел бы знать, как это сделать изначально в plotly lib. Однако обходные пути также полезны.
Вы можете использовать этот код:
parent = fig.data[0]['parents']
child = fig.data[0]['labels']
for i,j in zip(*np.unique(parent, return_counts=True)):
if i != '':
#parent[parent == i] = i+' '+str(j) # if you have only a root, uncomment this line
child[child == i] = i+' '+str(j)
Даже если вы используете фрейм данных с px.treemap, вам необходимо установить метки и аргументы родителей. Таким образом, вы можете использовать тот же код для добавления счетчика.
BW, я не видел, чтобы ты обновил код.
У вас в данном случае два корня, прокомментируйте строку. Я обновил свой ответ.
Работает как шарм! Последнее: попытка np.sum() с fig.data[0]['values'] чтобы у меня были COUNT и SUM.. Я думаю, что понимаю вашу логику с zip, но в моей попытке чего-то не хватает ?
Я не понял, что вы хотите резюмировать?
Пожалуйста, проверьте вопрос. Вы спрашиваете, какая колонка? df['Сумма']
Позвольте мне попробовать еще раз: идеальный результат «Азия 2 страны, 41 мм», «Африка 2 страны, 37 мм». ММ берутся из df['Amount']
Я предпочитаю создать еще один вопрос с вашим новым требованием, но я не понял с различными обновлениями для вашего вопроса.
Значит, в Plotly нет собственного способа сделать это? Пытаетесь реализовать свой код, но как это сделать, когда px принимает на вход dataframe? Пожалуйста, смотрите обновленный код