另一个答案是有点hacky。因此,更严格的解决方案(不生成随后删除的图)将涉及手动创建ScalarMappable作为色条的输入。
import matplotlib.pyplot as pltimport seaborn as snstitanic = sns.load_dataset("titanic")g = titanic.groupby('pclass')survival_rates = g['survived'].mean()n = g.size()norm = plt.Normalize(survival_rates.min(), survival_rates.max())sm = plt.cm.ScalarMappable(cmap="Reds", norm=norm)sm.set_array([])ax = sns.barplot(x=n.index, y=n, hue=survival_rates, palette='Reds', dodge=False)ax.set_ylabel('n passengers')ax.get_legend().remove()ax.figure.colorbar(sm)plt.show()


