我有一个Dataframe,它表示一个二进制矩阵(0和1),在行和列上都有标签。我使用以下代码打印矩阵,为每个标签分配一种颜色:
import seaborn as sns
import matplotlib.pylab as plt
import matplotlib as mpl
import pandas as pd
import numpy as np
N = 100
M = 200
p = 0.8
df = pd.DataFrame(np.random.choice([0,1], (M,N), p=(p, 1-p)),
columns=sorted((list(range(10))*N)[0:N]),
index=sorted((list(range(10))*N)[0:M]))
cmap = mpl.colors.ListedColormap([(.8, .8, .8, 1.0)] + [plt.cm.jet(i) for i in range(plt.cm.jet.N-1)])
ax = sns.heatmap(df.apply(lambda s: (s.name==s.index)*s*(s.index+1)), mask=df.eq(0), cmap=cmap )

我的问题是,cbar中显示的颜色与图中显示的颜色顺序相反(标签也是如此)。如何反转cbar中的颜色和标签?我试过了:
ax.invert_yaxis()但它也改变了剧情的结构。
有解决方案吗?
发布于 2021-08-01 22:16:47
您可以通过ax.collections[0].colorbar获取colorbar,然后在其ax上调用invert_yaxis()。
ax.collections[0].colorbar.ax.invert_yaxis()

https://stackoverflow.com/questions/68613305
复制相似问题