在条形图中使用色相时,让Seaborn显示色标而不是图例?

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

import seaborn as sns

titanic = sns.load_dataset("titanic")

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',

dodge=False,

)

ax.set_ylabel('n passengers')

sns绘制的条形图

这里的传说有点愚蠢,我绘制的柱数越多,情况就越糟。最有意义的是颜色条(例如在调用时使用的颜色条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()

以上是 在条形图中使用色相时,让Seaborn显示色标而不是图例? 的全部内容, 来源链接: utcz.com/qa/407075.html

回到顶部