mandok
mandok

Reputation: 492

Seaborn heatmap colors are reversed

I'm generating a heatmap from a pandas dataframe using a code that looks like this on my apple computer.

import matplotlib.pyplot as plt
import seaborn as sns

fig, ax = plt.subplots(figsize=(14,14))
sns.set(font_scale=1.4)
sns_plot = sns.heatmap(df, annot=True, linewidths=.5, fmt='g', ax=ax).set_yticklabels(ax.get_yticklabels(), rotation=0)
ax.set_ylabel('Product')
ax.set_xlabel('Manufacturer')
ax.xaxis.set_ticks_position('top')
ax.xaxis.set_label_position('top')

fig.savefig('output.png')

And I get a heatmap looking like this:

enter image description here

I then put my code in a docker container with an ubuntu image and I install the same version of seaborn. The only difference is that I need to add a matplotlib configuration so that TCL doesn't scream:

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import seaborn as sns

And I get a heatmap that looks like this (I use the same code and the same pandas dataframe):

enter image description here

I'm unable to find why the color gradient is inverted and would love to hear if you have any idea.

Thank you !

Upvotes: 3

Views: 1940

Answers (1)

mmagnuski
mmagnuski

Reputation: 1275

The default colormap has changed to 'rocket' for sequential data with 0.8 release of seaborn, see the release notes. The colormap looks this way now:

You can always use the cmap argument and specify which colormap you prefer to use. For example, to get the pre-0.8 colormap for non-divergent data use: cmap=sns.cubehelix_palette(light=.95, as_cmap=True).

Upvotes: 3

Related Questions