2017-10-19 42 views
2

Si les facteurs sont des nombres, même sa chaîne de caractères, les ordres barraqués par sa valeur. Par exemple, facteur = ["24", "12", "60", "18", "36", "6", "10", "48", "30", "15"] valeur = [9,8,7,6,5,4,3,2,1,0]Barplot Seaborn mauvais ordre lors de l'utilisation des nombres dans le facteur même son type est la chaîne

barplot ne peut pas ordonner par les valeurs ... si je change d liste pour les caractères alphanumériques par exemple facteur = ["a", "b", "c"] puis il ordonne par valeur.

Voici les photos pour avant et après.

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() 
+0

Postez le code de la liste et traçage. – kabanus

Répondre

2

d contient des chaînes. En tant que tels, ils sont triés en tant que mots ("6" est plus haut que "10" puisque la lettre "6" est supérieure à "1").

Changez-le en entiers pour avoir la commande que vous attendez en général.

Deuxième problème, vous souhaitez commander en fonction des valeurs y (valeur dans votre code), ce qui précède ne vous aidera pas puisque vous ne voulez pas que les valeurs d soient triées. Vous devrez commander explicitement les utiliser le paramètre « ordre »:

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

en supposant d est ordonné que vous voulez, comme votre exemple.