我正在使用seaborn和python3创建一个水平的条形图,如下所示:
library()
有时,两个条形将具有相同的标签(如上例所示),这导致seaborn将带有该标签的两个数据点绘制为一个条形,并带有额外的错误条:
我更希望seaborn不要合并这些值(即这个特定的图表应该有三个水平列,其中两个标记为Bob)。
我已尝试在#!/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')
来电中设置xerr = None
,但它没有任何变化。
如果我没有标签重复会更好,但不幸的是,这些名字是由我的势力范围以外的人设定的。我当然可以通过重命名数据点来解决这个问题(例如" Bob 1"" Bob 2"),但这不是一个优雅的解决方案。
有没有办法强制seaborn绘制与标签/值一样多的条形图,即使某些标签相同?
答案 0 :(得分:2)
你可以使用以下内容执行此操作:
names = ['a', 'b', 'c']
values = [3, 2, 1]
ax = sns.barplot(x = values, y = names)
ax.set_yticklabels(['Alice', 'Bob', 'Bob'])
但应该你这样做?对于seaborn做你想要的事情没有任何意义,所以你可能最好只是导入seaborn
以获得你想要的风格,然后用matplotlib
进行绘图,这样你就可以准确地绘制你想要什么。