El módulo de python seaborn se basa en matplotlib y produce un mapa de calor muy agradable.
A continuación se muestra una implementación con seaborn, diseñada para el portátil ipython / jupyter.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
# import the data directly into a pandas dataframe
nba = pd.read_csv("http://datasets.flowingdata.com/ppg2008.csv", index_col='Name ')
# remove index title
nba.index.name = ""
# normalize data columns
nba_norm = (nba - nba.mean()) / (nba.max() - nba.min())
# relabel columns
labels = ['Games', 'Minutes', 'Points', 'Field goals made', 'Field goal attempts', 'Field goal percentage', 'Free throws made',
'Free throws attempts', 'Free throws percentage','Three-pointers made', 'Three-point attempt', 'Three-point percentage',
'Offensive rebounds', 'Defensive rebounds', 'Total rebounds', 'Assists', 'Steals', 'Blocks', 'Turnover', 'Personal foul']
nba_norm.columns = labels
# set appropriate font and dpi
sns.set(font_scale=1.2)
sns.set_style({"savefig.dpi": 100})
# plot it out
ax = sns.heatmap(nba_norm, cmap=plt.cm.Blues, linewidths=.1)
# set the x-axis labels on the top
ax.xaxis.tick_top()
# rotate the x-axis labels
plt.xticks(rotation=90)
# get figure (usually obtained via "fig,ax=plt.subplots()" with matplotlib)
fig = ax.get_figure()
# specify dimensions and save
fig.set_size_inches(15, 20)
fig.savefig("nba.png")
La salida se ve así:
utilicé el mapa de colores matplotlib Blues, pero personalmente encuentro los colores predeterminados bastante hermosos. Usé matplotlib para rotar las etiquetas del eje x, ya que no pude encontrar la sintaxis de seaborn. Como señaló grexor, fue necesario especificar las dimensiones (fig.set_size_inches) por prueba y error, lo que me pareció un poco frustrante.
Como señaló Paul H, puede agregar fácilmente los valores a los mapas de calor (annot = True), pero en este caso no pensé que mejorara la figura. Se tomaron varios fragmentos de código de la excelente respuesta de joelotz.