在 python 中指定热图的颜色增量

Specifying the color Increments of heat-map in python

有没有办法在Seaborn或Matplotlib中指定热图色标的颜色增量。例如,对于包含 0-1 之间归一化值的数据帧,要指定 100 个离散颜色增量,以便每个值与其他值区分开来?

提前致谢

有两种主要方法可以将热图分割成 n 颜色:

  1. 提供四舍五入到 n 值的数据。
  2. 使用离散颜色图。

以下代码显示了这两个选项。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

x, y = np.meshgrid(range(15),range(6))
v = np.random.rand(len(x.flatten()))
df = pd.DataFrame({"x":x.flatten(), "y":y.flatten(),"value":v})

df = df.pivot(index="y", columns="x", values="value")

n = 4.


fig, (ax0, ax, ax2) = plt.subplots(nrows=3)

### original
im0 = ax0.imshow(df.values, cmap="viridis", vmin=0, vmax=1)
ax0.set_title("original")

### Discretize array
arr = np.floor(df.values * n)/n
im = ax.imshow(arr, cmap="viridis", vmin=0, vmax=1)
ax.set_title("discretize values")

### Discretize colormap
cmap = plt.cm.get_cmap("viridis", n)
im2 = ax2.imshow(df.values, cmap=cmap, vmin=0, vmax=1 )
ax2.set_title("discretize colormap")


#colorbars
fig.colorbar(im0, ax=ax0)
fig.colorbar(im, ax=ax)
fig.colorbar(im2, ax=ax2, ticks=np.arange(0,1,1./n), )
plt.tight_layout()
plt.show()