Moduł python seaborn jest oparty na matplotlib i tworzy bardzo ładną mapę cieplną.
Poniżej znajduje się realizacja z seabornem, zaprojektowana dla notebooka 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")
Wynik wygląda następująco:
użyłem mapy kolorów matplotlib Blues, ale osobiście uważam, że domyślne kolory są całkiem piękne. Użyłem matplotlib do obrócenia etykiet osi X, ponieważ nie mogłem znaleźć składni morskiej. Jak zauważył grexor, konieczne było określenie wymiarów (rys. Set_size_inches) metodą prób i błędów, co było trochę frustrujące.
Jak zauważył Paul H, możesz łatwo dodać wartości do map ciepła (adnotacja = True), ale w tym przypadku nie sądziłem, że poprawiło to wartość. Kilka fragmentów kodu zostało zaczerpniętych z doskonałej odpowiedzi Joelotza.