Skip to content

Instantly share code, notes, and snippets.

@databill86
Forked from gVallverdu/capp_treemaps.py
Created August 1, 2019 07:11
Show Gist options
  • Save databill86/d34251f5bf3b4d93721fdd075a01b94b to your computer and use it in GitHub Desktop.
Save databill86/d34251f5bf3b4d93721fdd075a01b94b to your computer and use it in GitHub Desktop.
Treemaps with python and matplotlib
import matplotlib
import matplotlib.pyplot as plt
import pandas as pd
import squarify
# read data from csv file
# data from CAPP opendata http://opendata.agglo-pau.fr/index.php/fiche?idQ=27
df = pd.read_csv("Evolution_et_structure_de_la_population/Evolution_structure_population.csv", sep=";")
df = df.set_index("libgeo")
df = df[["superf", "p11_pop"]]
df2 = df.sort_values(by="superf", ascending=False)
df3 = df2.drop("PAU")
# qualtities plotted
# squarre area is the town surface area (superf)
# color scale is the town population in 2011 (p11_pop)
# treemap parameters
x = 0.
y = 0.
width = 100.
height = 100.
cmap = matplotlib.cm.viridis
# color scale on the population
cvalues = df3.p11_pop
norm = matplotlib.colors.Normalize(vmin=cvalues.min(), vmax=cvalues.max())
colors = [cmap(norm(value)) for value in cvalues]
# labels for squares
labels = ["%s\nS = %d km2\npop = %d" % (label) for label in zip(df3.index, df3.superf, df3.p11_pop)]
# make plot
fig = plt.figure(figsize=(12, 10))
fig.suptitle("Population et superficie dans la CAPP", fontsize=20)
ax = fig.add_subplot(111, aspect="equal")
ax = squarify.plot(df3.superf, color=colors, label=labels, ax=ax, alpha=.7)
ax.set_xticks([])
ax.set_yticks([])
ax.set_title("Pau: superficie = %d km2, population = %d\n" % (df2["superf"]["PAU"], df2["p11_pop"]["PAU"]), fontsize=14)
# color bar
# create dummy invisible image with a color map
img = plt.imshow([cvalues], cmap=cmap)
img.set_visible(False)
fig.colorbar(img, orientation="vertical", shrink=.96)
fig.text(.76, .9, "Population", fontsize=12)
plt.show()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment