我有以下数据:
my_array = array([[0, 0, 1, 0, 0],
[0, 1, 1, 1, 0],
[0, 0, 0, 1, 1],
[0, 0, 1, 1, 1],
[0, 1, 1, 0, 0],
[1, 1, 1, 1, 0],
[0, 1, 1, 1, 1],
[0, 0, 0, 0, 1],
[0, 1, 0, 1, 0]])
以及
df.values = array([246360, 76663, 29045, 11712, 5526, 3930, 3754, 1677,
1328])
我正在制作一个热图,如下所示:
import seaborn as sns
import matplotlib.pyplot as plt
cmap = sns.cm.rocket_r
ax = sns.heatmap(my_array, xticklabels=["A", "B", "C", "D", "E"], yticklabels=df.values, cmap = cmap)
ax.set(xlabel='Test Type', ylabel='Number', title='patterns of missingness')
fig=plt.figure(figsize=(40,30), dpi= 20, facecolor='w', edgecolor='k')
fig
我得到了以下结果:
我的问题是,我如何摆脱连续的色标,只选择两种不同的颜色:白色代表0绿色代表1
1条答案
按热度按时间2vuwiymt1#
您可以使用
LinearSegmentedColormap
而不是当前使用的cmap来完成此操作。然后在调用
sns.heatmap
时将ticks
参数传递给cbar_kws
参数:其中:
如果很清楚绿色和白色代表什么,你也可以用
cbar=False
关闭cbar。