我使用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不要合并这些值(即这个特定的图表应该有三个水平列,其中两个标记为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/