Heat maps display numeric tabular data where the cells are colored depending upon the contained value. Heat maps are great for making trends in this kind of data more readily apparent, particularly when the data is ordered and there is clustering.
dataset: Seaborn - flights
In [1]:
%matplotlib inline
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
plt.rcParams['figure.figsize'] = (20.0, 10.0)
plt.rcParams['font.family'] = "serif"
In [2]:
df = pd.pivot_table(data=sns.load_dataset("flights"),
index='month',
values='passengers',
columns='year')
df.head()
Out[2]:
Default plot
In [3]:
sns.heatmap(df)
Out[3]:
cmap
adjusts the colormap used. I like diverging colormaps for heatmaps because they provide good contrast.
In [4]:
sns.heatmap(df, cmap='coolwarm')
Out[4]:
center
can be used to indicate at which numeric value to use the center of the colormap. Above we see most of the map using blues, so by setting the value of center
equal to the midpoint of the data then we can create a map where there are more equal amounts of red and blue shades.
In [5]:
midpoint = (df.values.max() - df.values.min()) / 2
sns.heatmap(df, cmap='coolwarm', center=midpoint)
Out[5]:
Adjust the lower and upper contrast bounds with vmin
and vmax
. Everything below vmin
will be the same color. Likewise for above vmax
.
In [6]:
midpoint = (df.values.max() - df.values.min()) / 2
sns.heatmap(df, cmap='coolwarm', center=midpoint, vmin=150, vmax=400)
Out[6]:
In [7]:
midpoint = (df.values.max() - df.values.min()) / 2
sns.heatmap(df, cmap='coolwarm', center=midpoint, vmin=-100, vmax=800)
Out[7]:
In [8]:
midpoint = (df.values.max() - df.values.min()) / 2
p = sns.heatmap(df, cmap='coolwarm', center=midpoint)
In [9]:
p.get_figure().savefig('../../figures/heatmap.png')
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [10]:
flights_long.pivot(index="month", columns="year", values='passengers')
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]: