1

I would like to plot just the colorbar for a heatmap. Here is a MWE:

import seaborn as sns
import io
import matplotlib.pyplot as plt
import numpy as np


A = np.random.rand(100,100)

g = sns.heatmap(A)
plt.show()

How can I plot just its colorbar and not the heatmap itself?

Simd
  • 19,447
  • 42
  • 136
  • 271

2 Answers2

3

Try to handle it manually:

import matplotlib as mpl
import numpy as np

fig, ax = plt.subplots(figsize=(1, 4))
# vmin, vmax =  np.nanmin(A), np.nanmax(A)
cmap = mpl.colormaps['rocket']
norm = mpl.colors.Normalize(0, 1)  # or vmin, vmax
cbar = fig.colorbar(mpl.cm.ScalarMappable(norm, cmap), ax)
plt.tight_layout()
plt.show()

Output:

enter image description here

Corralien
  • 109,409
  • 8
  • 28
  • 52
0

Plotting just the colorbar is not possible to my knowledge. To see the whole spectrum of the colorbar, you could use a sample heatmap that is just a range from 0 to 100:

import seaborn as sns
import matplotlib.pyplot as plt

A = [[a] for a in range(100)] # sample heatmap

fig, ax = plt.subplots()

sns.heatmap(A, cbar=False, ax=ax)

cax = fig.add_axes([1.0, 0.0, 0.0, 1.0])  # Adjust the position and size

plt.show()

Output of the snippet

Quantum
  • 510
  • 1
  • 2
  • 19