Seaborn barplot在因子中使用数字时错误的顺序甚至它的类型是字符串

时间:2017-10-19 19:59:26

标签: python-3.x matplotlib seaborn

如果因素是数字甚至是其类型字符串,则barplot按其值排序。 例如, factor = [“24”,“12”,“60”,“18”,“36”,“6”,“10”,“48”,“30”,“15”] 值= [9,8,7,6,5,4,3,2,1,0]

barplot无法按值排序... 如果我将d列表更改为字母数字字符,例如 factor = [“a”,“b,”,“c”] 然后按价值排序。

以下是之前和之后的图片。

enter image description here

enter image description here

d = ["24", "12", "60", "18", "36", "6", "10", "48", "30", "15"]
value = [9,8,7,6,5,4,3,2,1,0]
y_cumsum = np.cumsum(value)
sns.barplot(d, value)
sns.pointplot(d, y_cumsum)
plt.show()

1 个答案:

答案 0 :(得分:3)

d包含字符串。因此,它们被排序为单词(“6”高于“10”,因为字母“6”高于“1”)。

将其更改为整数以获得您期望的顺序。

第二个问题,您希望根据y值(代码中的值)进行排序,因此上述内容对您没有帮助,因为您不希望对d值进行排序。您必须使用“order”参数明确订购它们:

sns.barplot(d, value,order=d)

假设d按您的意愿排序,就像您的例子一样。