Древовидная карта Python с первым уровнем в виде цвета и легенды, а не метокPython

Программы на Python
Anonymous
Древовидная карта Python с первым уровнем в виде цвета и легенды, а не меток

Сообщение Anonymous »

Я хотел бы попробовать создать древовидные карты в Python, похожие на эти:
Первый пример того, к чему я стремлюсь
Второй пример того, к чему я стремлюсь
Что мне нравится в них, так это то, что цвета позволяют легко увидеть первый уровень и его размер, но представлены только квадраты второго уровня. Я чувствую, что это облегчает чтение, чем то, что я могу сделать в настоящее время (см. ниже)

Код: Выделить всё

#test data
import pandas as pd
product = ["Pins", "Binders", "Paper",
"Pins", "Binders", "Paper"]
city = ["Amsterdam", "Amsterdam", "Amsterdam",
"Brussels", "Brussels", "Brussels"]
sales = [6, 4, 1, 5, 3, 1]
df = pd.DataFrame(
dict(product=product, city=city, sales=sales)
)

df
product city    sales
0   Pins    Amsterdam   6
1   Binders Amsterdam   4
2   Paper   Amsterdam   1
3   Pins    Brussels    5
4   Binders Brussels    3
5   Paper   Brussels    1
Я пробовал использовать сюжет:

Код: Выделить всё

import plotly.express as px
fig = px.treemap(df, path=['city', 'product'], values='sales')
fig.update_layout(margin = dict(t=50, l=25, r=25, b=25))
fig.show()
Древовидная карта с использованием Plotly
Мне не нравится стиль этой древовидной карты: показан первый уровень, а второй уровень меньше внутри него.
Я также пробовал использовать squrify с цветом, установленным в качестве первого уровня (squarify допускает только 1 уровень, если я правильно понимаю):

Код: Выделить всё

import matplotlib.pyplot as plt
import seaborn as sns
import squarify

fig, ax = plt.subplots(figsize=(12, 8))
ax.set_axis_off()

category_codes, unique_categories = pd.factorize(df.loc[:, "city"])
colors = [sns.color_palette("deep")[cat] for cat in category_codes]

squarify.plot(sizes=df.loc[:, "sales"],
label=df.loc[:, "product"],
color=colors,
pad=True,
ax=ax)
Карта дерева с использованием squrify
Но здесь цвета не сгруппированы вместе.
Какие инструменты вы бы порекомендовали, чтобы добиться внешнего вида, аналогичного первому уровню? Мне не нужно, чтобы древовидная карта была интерактивной, я собираюсь экспортировать ее как статическое изображение.

Вернуться в «Python»