esp*_*tte 4 python matplotlib heatmap pandas seaborn
我想设置调色板比例的最大值和最小值。在下面的示例中,我希望调色板的比例从 -10 到 50,就好像它是一个顺序颜色图一样。我真的不在乎强调数字与“零线”相交的地方。
import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np
import pandas as pd
import seaborn as sns
index = np.arange(0, 50)
data = np.random.uniform(low=-10, high=100, size=(50,50))
dft = pd.DataFrame(index=index, columns=index, data=data)
fig, ax = plt.subplots(figsize=(10,10))
cbar_ax = fig.add_axes([.905, 0.125, .05, 0.755])
ax = sns.heatmap(dft, linewidths=.5, cmap=cm.YlGnBu, cbar_kws={'label': 'label'},
ax=ax, square=True, cbar_ax=cbar_ax, center=55)
plt.show()
Run Code Online (Sandbox Code Playgroud)
但是,如果我这样做:
ax = sns.heatmap(dft, linewidths=.5, cmap=cm.YlGnBu, cbar_kws={'label': 'label'},
ax=ax, square=True, cbar_ax=cbar_ax, vmax=50, vmin=-10)
Run Code Online (Sandbox Code Playgroud)
调色板从 -50 到 50,并被vmin=-10忽略。
从文档(对于vmin, vmax),
当推断出发散数据集时,可能会忽略这些值之一。
您应该使用center参数来指定颜色图居中的值,并结合vmax或vmin指定限制之一。
vmin, vmax = -10, 50
sns.heatmap(..., center=(vmin + vmax) / 2., vmax=vmax)
Run Code Online (Sandbox Code Playgroud)