Peaufinage seaborn.une boîte à moustaches
Je voudrais comparer un ensemble de distributions de scores (score
), regroupées par certaines catégories (centrality
) et de couleur par une autre (model
). J'ai essayé le suivant avec seaborn:
plt.figure(figsize=(14,6))
seaborn.boxplot(x="centrality", y="score", hue="model", data=data, palette=seaborn.color_palette("husl", len(models) +1))
seaborn.despine(offset=10, trim=True)
plt.savefig("/home/i11/staudt/Eval/properties-replication-test.pdf", bbox_inches="tight")
Il y a quelques problèmes que j'ai avec cette intrigue:
- Il y a une grande quantité de valeurs aberrantes et je n'aime pas la façon dont ils sont établis ici. Puis-je les supprimer? Puis-je modifier l'apparence de montrer moins d'encombrement? Puis-je de couleur entre eux, au moins, de sorte que leur couleur correspond à la couleur de la zone?
- La
model
valeuroriginal
est spécial parce que toutes les autres distributions devraient être comparées à la distribution deoriginal
. Cela devrait être visuellement reflète dans l'intrigue. Puis-je faireoriginal
la première case de chaque groupe? Puis-je compenser ou de la marquer différemment en quelque sorte? Serait-il possible de tracer une ligne horizontale à travers la médiane de chaqueoriginal
de distribution et par l'intermédiaire du groupe de cases? - des valeurs de quelques
score
sont de très petite taille, comment faire une mise à l'échelle de l'axe des y pour les montrer?
EDIT:
Voici un exemple avec un journal à l'échelle de l'axe y - pas encore idéal. Pourquoi les certaines boîtes semblent coupé à l'extrémité basse?
Le bleu de valeurs aberrantes un matplotlib bug, et ils peuvent être évités par la mise à jour de votre seaborn. Mais je ne voudrais certainement pas que supprimer les valeurs aberrantes!
Avez-vous essayé journal-mise à l'échelle la variable y?
Oui, mais que "compresse" la bars des grandes valeurs très bien dans le haut de la parcelle. Est-il un compromis, c'est à dire de journaux de mise à l'échelle pour une partie seulement de l'axe?
Par le chemin, grand fan de seaborn, juste essayer d'obtenir le meilleur de lui. 😉
Et parfois, les groupes sont difficiles à distinguer, par exemple, si les cases ne pas toucher. Est-il possible de tracer des lignes verticales séparant les groupes?
Avez-vous essayé journal-mise à l'échelle la variable y?
Oui, mais que "compresse" la bars des grandes valeurs très bien dans le haut de la parcelle. Est-il un compromis, c'est à dire de journaux de mise à l'échelle pour une partie seulement de l'axe?
Par le chemin, grand fan de seaborn, juste essayer d'obtenir le meilleur de lui. 😉
Et parfois, les groupes sont difficiles à distinguer, par exemple, si les cases ne pas toucher. Est-il possible de tracer des lignes verticales séparant les groupes?
OriginalL'auteur clstaudt | 2016-02-01
Vous devez vous connecter pour publier un commentaire.
De valeurs aberrantes d'affichage
Vous devriez être en mesure de passer des arguments à
seaborn.boxplot
que vous pouvez passer àplt.boxplot
(voir la documentation), de sorte que vous pouvez régler l'affichage des valeurs aberrantes par la mise enflierprops
. Ici sont quelques exemples de ce que vous pouvez faire avec vos valeurs aberrantes.Si vous ne voulez pas pour les afficher, vous pourriez faire
ou vous pourrait faire la lumière grise de la sorte:
Ordre des groupes
Vous pouvez définir l'ordre des groupes manuellement avec
hue_order
, par exempleDe mise à l'échelle de l'axe y
Vous pourriez juste obtenir les valeurs minimum et maximum de toutes les valeurs de y et de définir
y_lim
en conséquence? Quelque chose comme ceci:EDIT: Ce dernier point n'a pas vraiment de sens puisque l'automatique
y_lim
gamme déjà inclure toutes les valeurs, mais je vais la laisser comme un exemple de la façon d'ajuster ces paramètres. Comme mentionné dans les commentaires, connectez-vous mise à l'échelle probablement plus de sens.OriginalL'auteur Lisa