python – 在条形图中使用色调时,让seaborn显示颜色条而不是图例?

假设我想制作一个条形图,其中条形的色调代表一些连续的数量.例如

将seaborn作为sns进口
titanic = sns.load_dataset(“泰坦尼克号”)
g = titanic.groupby(‘pclass’)
survival_rates = g [‘survived’].mean()
n = g.size()
ax = sns.barplot(x = n.index,y = n,
           hue = survival_rates,palette =’Reds’,
            闪避=假
          )
ax.set_ylabel(‘n乘客’)

python  – 在条形图中使用色调时,让seaborn显示颜色条而不是图例?

这里的传说有点愚蠢,而且我绘制的条纹越多越好.最有意义的是颜色条(例如在调用sns.heatmap时使用).有没有办法让seaborn做到这一点?

解决方法:

另一个答案有点hacky.因此,更严格的解决方案,无需生成之后删除的图,将涉及手动创建ScalarMappable作为颜色条的输入.

import matplotlib.pyplot as plt
import seaborn as sns
titanic = 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()
上一篇:python – 在seaborn中绘制两列dataFrame


下一篇:python – 使用Seaborn,如何从点图中获取所有元素以显示在violoinplot的元素之上?