【问题标题】:Seaborn barplot with x_order: AttributeError: 'bool' object has no attribute 'sum'Seaborn barplot with x_order: AttributeError: 'bool' object has no attribute 'sum'
【发布时间】:2015-06-19 10:45:23
【问题描述】:

我正在尝试使用seaborn.barplot() 绘制简单的条形图。在最简单的情况下它运行良好,x 可以通过字符串或数字的向量:

import numpy as np
import seaborn as sns
import matplotplib.pyplot as plt
fig, ax = plt.subplots()
ax = sns.barplot(np.array(['a','b','c']), y = np.array([1,2,3]))
fig.tight_layout()
fig.savefig('test.pdf')

要以自定义方式对条形图进行排序,可以使用 x_order 参数,它是一个带有索引的类似列表的对象。如果x本身是数字的话,也可以正常工作:

x = np.array([2, 0, 1])
y = np.array([3, 4, 2])
sns.barplot(x, y = y, x_order = list(x.argsort()))

但是,如果x 不是数字,它会给出错误,即使我尝试按其他数字向量排序,或者通过对字符串向量本身排序:

x = np.array(['b', 'c', 'a'])
y = np.array([3, 4, 2])
sns.barplot(x, y = y, x_order = list(x.argsort()))
sns.barplot(x, y = y, x_order = [2, 0, 1])

然后我收到错误AttributeError: 'bool' object has no attribute 'sum'。我没有找到太多关于这个的信息,我想知道如何正确地进行这个简单的排序。

【问题讨论】:

    标签: python matplotlib bar-chart seaborn


    【解决方案1】:

    x_order 应该是标签列表,而不是索引列表。换句话说,在后一种情况下,您只需要x_order=['a', 'b', 'c']

    【讨论】:

    • 太棒了,它有效!谢谢!很遗憾,这没有记录在案。
    猜你喜欢
    • 2022-12-01
    • 1970-01-01
    • 2020-04-26
    • 2020-11-21
    • 1970-01-01
    • 1970-01-01
    • 2022-12-15
    • 2022-12-27
    • 2022-11-18
    相关资源
    最近更新 更多