Je suis intéressé par un dessin treemap:TreeMap en Python
Quelle est la meilleure façon de faire un en Python? Y a-t-il une bibliothèque qui pourrait produire un tel graphique, compte tenu des données d'entrée appropriées?
Je suis intéressé par un dessin treemap:TreeMap en Python
Quelle est la meilleure façon de faire un en Python? Y a-t-il une bibliothèque qui pourrait produire un tel graphique, compte tenu des données d'entrée appropriées?
Ils peuvent être utilisés:
J'ai remarqué qu'il ya une bibliothèque treemap dans pypi aussi. Je n'ai pas essayé celui-là.
L'approche matlab est en fait un livre de recettes SciPy disponible sur http://scipy-cookbook.readthedocs.io/items/Matplotlib_TreeMap.html – MERose
Vous pouvez utiliser la bibliothèque pygale, cela est si simple
http://pygal.org/en/stable/documentation/types/treemap.html
Une autre solution est que vous pouvez utiliser la bibliothèque squarify, voici un code que j'utilisé
import matplotlib
import matplotlib.pyplot as plt
import pandas as pd
import squarify
# qualtities plotted
# squarre area is the town surface area (superf)
# color scale is the town population in 2011 (p11_pop)
# read data from csv file
# data from CAPP opendata http://opendata.agglo-pau.fr/index.php/fiche?idQ=27
df = pd.read_excel("Customer Success New.xlsx")
df = df.set_index("location_id")
df = df[["user_id", "company_id"]]
df2 = df.sort_values(by="user_id", ascending=False)
# treemap parameters
x = 0.
y = 0.
width = 100.
height = 100.
cmap = matplotlib.cm.viridis
# color scale on the population
# min and max values without Pau
mini, maxi = df2.company_id.min(), df2.company_id.max()
norm = matplotlib.colors.Normalize(vmin=mini, vmax=maxi)
colors = [cmap(norm(value)) for value in df2.company_id]
colors[1] = "#FBFCFE"
# labels for squares
#labels = ["hab" % (label) for label in zip(df2.index, df2.user_id), df2.company_id)]
#labels[11] = "MAZERES" % (df2["user_id"]["MAZERES-LEZONS"], df2["company_id"]["MAZERES-LEZONS"])
# make plot
fig = plt.figure(figsize=(12, 10))
fig.suptitle("Population et superficie des communes de la CAPP", fontsize=20)
ax = fig.add_subplot(111, aspect="equal")
ax = squarify.plot(df2.superf, color=colors, label=labels, ax=ax, alpha=.7)
ax.set_xticks([])
ax.set_yticks([])
ax.set_title("L'aire de chaque carré est proportionnelle à la superficie de la commune\n", fontsize=14)
# color bar
# create dummy invisible image with a color map
img = plt.imshow([df2.p11_pop], cmap=cmap)
img.set_visible(False)
fig.colorbar(img, orientation="vertical", shrink=.96)
fig.text(.76, .9, "Population", fontsize=14)
fig.text(.5, 0.1,
"Superficie totale %d km2, Population de la CAPP : %d hab" % (df2.superf.sum(), df2.p11_pop.sum()),
fontsize=14,
ha="center")
fig.text(.5, 0.07,
"Source : http://opendata.agglo-pau.fr/",
fontsize=14,
ha="center")
plt.show()
Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et fournir le lien pour référence. Les réponses à lien uniquement peuvent devenir invalides si la page liée change. - [De l'examen] (/ review/low-quality-posts/17434830) – Oz123
Ok, merci pour les commentaires de vous deux, je vais mettre à jour ma réponse –
@NabihIbrahimBawazir semble beaucoup mieux, merci de mettre à jour votre réponse! – g00glen00b
7 ans plus tard, il est encore ridicule qu'il n'y ait pas de paquet python décent capable de tracer un treemap simple. La réponse énumérée ci-dessous est toujours l'état de l'art mais très inutile. Avec R ou js il s'agit de deux lignes de code, mais pourquoi si compliqué en python? Je ne comprends pas. – MERose