Estoy interesado en la elaboración de un treemap:Treemap en Python
¿Cuál es la manera más fácil de hacer uno en Python? ¿Hay una biblioteca que pueda producir dicho gráfico, teniendo en cuenta los datos de entrada adecuados?
Estoy interesado en la elaboración de un treemap:Treemap en Python
¿Cuál es la manera más fácil de hacer uno en Python? ¿Hay una biblioteca que pueda producir dicho gráfico, teniendo en cuenta los datos de entrada adecuados?
Estos podrían utilizarse:
he notado que hay una biblioteca treemap en PyPI también. No lo he intentado.
El enfoque de MATLAB es, de hecho, un libro de cocina SciPy disponible en http://scipy-cookbook.readthedocs.io/items/Matplotlib_TreeMap.html – MERose
Puede utilizar la biblioteca Pygal, esto es tan simple
http://pygal.org/en/stable/documentation/types/treemap.html
Otra solución es que se puede usar la biblioteca squarify, aquí hay un código que yo estaba acostumbrado
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()
Si bien este enlace puede responder a la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia. - [crítica] (/ revisión/baja calidad postes/17434830) – Oz123
Ok, gracias por los comentarios de los dos, voy a actualizar mi respuesta –
@NabihIbrahimBawazir se ve mucho mejor, gracias por la actualización de su respuesta! – g00glen00b
7 años más tarde todavía es ridículo que no hay ningún paquete python decente capaz de trazar un mapa de árbol simple. La respuesta que se detalla a continuación sigue siendo el estado del arte pero muy poco útil. Con R o js, se trata de dos líneas de código, pero ¿por qué es tan complicado en Python? No lo entiendo – MERose