python - Seaborn 条形图,其中 2 个条形图具有相同标签

标签 python python-3.x matplotlib seaborn

我使用seaborn和python3来创建水平条形图,如下所示:

#!/usr/bin/python3

import seaborn as sns
import matplotlib.pyplot as plt

if __name__ == '__main__':

    names  = ['Alice', 'Bob', 'Bob']
    values = [3, 2, 1]

    sns.barplot(x = values, y = names)

    plt.savefig('seaborn_figure.png')

有时,两个条形图会具有相同的标签(如上例所示),这会导致seaborn将具有该标签的两个数据点绘制为一个带有额外误差条的条形图:

seaborn barplot

我希望seaborn不要合并这些值(即这个特定的图表应该有三个水平列,其中两个标记为Bob)。

我尝试在 sns.barplot() 调用中设置 xerr = None,但它没有任何改变。

如果我没有重复的标签就更好了,但不幸的是这些名称是由我影响范围之外的人设置的。我当然可以通过重命名数据点(例如“Bob 1”和“Bob 2”)来解决这个问题,但这不是一个优雅的解决方案。

有没有办法强制seaborn绘制与标签/值一样多的条形,即使某些标签是相同的?

最佳答案

可以使用如下方法来做到这一点:

names  = ['a', 'b', 'c']
values = [3, 2, 1]

ax = sns.barplot(x = values, y = names)
ax.set_yticklabels(['Alice', 'Bob', 'Bob'])

但是应该你这样做吗?对于seaborn来说,做你所要求的事情并没有什么意义,所以你最好只导入seaborn来获得你想要的样式,然后用matplotlib进行绘图> 这样您就可以准确地绘制您想要的内容。

关于python - Seaborn 条形图,其中 2 个条形图具有相同标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34821473/

相关文章:

python - 使用与 Jupyter Notebook 相同的样式将 Pandas 数据框渲染为 HTML

python - Urlize DRF 链接

python - 当 paramiko 中的 exec_command 进入无限循环时,如何退出?

python - 我的 Python 函数中有一个生成器;如何返回修改后的列表?

python - 如何获取 Tensorflow 中的所有集合?

python - strptime 是否有通配符格式指令?

python-3.x - itertools.cycle().next()?

matplotlib - 使用 PyCharm 和 Docker 解释器进行 X11 转发

python - matplotlib/cartopy Mollweide 投影中经度环绕的接缝

python - 在matplotlib颜色栏中隐藏每个第n个刻度标签的最干净方法?