TreeMap

en langage python

L'essentiel de cette page

Les treemap permettent de visualiser les catégories et sous-catégories d'un grand nombre de variables catégorielles.

1- Treemap avec squarify

A développer :


# libraries

import matplotlib.pyplot as plt

import squarify # pip install squarify (algorithm for treemap)

# If you have 2 lists

squarify.plot(sizes=[13,22,35,5], label=["group A", "group B", "group C", "group D"], alpha=.7 )

plt.axis('off')

plt.show()


Avec couleur et taille de texte personnalisée + croisé de variables pandas (cliquer pour voir le code ci-dessous)

import matplotlib.pyplot as plt

import squarify #

import seaborn as sns

diamonds =sns.load_dataset("diamonds")

# https://sites.google.com/view/aide-python/prise-en-main-de-python/les-objets-python/les-dataframes-python-avec-panda#h.p_WQJ0MI2JPptY

effectifs = diamonds.value_counts()

#

import matplotlib.cm as cm

import matplotlib

my_values = effectifs.values

cmap = cm.Blues

mini=min(my_values)

maxi=max(my_values)

norm = matplotlib.colors.Normalize(vmin=mini, vmax=maxi)

#

colors = [cmap(norm(value)) for value in my_values]

#

squarify.plot(sizes=list(effectifs.values),

label=list(effectifs.index), alpha=.7,

color = colors,

text_kwargs={'fontsize':6, 'fontname':"Times New Roman Bold",'weight':'bold'})

plt.axis('off')

plt.title('Treemap des catégories de diamants')

plt.show()

2- Treemap avec plotly

Avec plotly

import plotly.express as px

df = px.data.tips()

fig = px.treemap(df, path=['day', 'time', 'sex'], values='total_bill')

fig.show()

TreeMap en croisant 3 variables ou plus.

import seaborn as sns

# print(sns.get_dataset_names())

diamonds = sns.load_dataset("diamonds") ; print(diamonds)

print(diamonds.head())

import pandas as pd ; import plotly.express as px

temp = pd.crosstab([diamonds.cut, diamonds.color], [diamonds.clarity],

rownames=['cut', "color"],

colnames=['clarity'],

dropna=False)

resultat = temp.stack().reset_index(name='Effectif')

fig = px.treemap(resultat, path=['cut', 'color', 'clarity'], values='Effectif')

fig.show()