web-dev-qa-db-fra.com

Comment mettre à l'échelle l'axe des y de Seaborn avec un graphique à barres?

J'utilise factorplot(kind="bar").

Comment mettre à l'échelle l'axe des y, par exemple avec l'échelle logarithmique?

J'ai essayé de bricoler avec les axes de l'intrigue, mais cela a toujours gâché l'intrigue des barres d'une manière ou d'une autre, alors essayez d'abord votre solution pour vous assurer qu'elle fonctionne vraiment.

24
user124114

Compte tenu de votre question mentionne barplot j'ai pensé que j'ajouterais une solution pour ce type de tracé également car elle diffère de la solution de factorplot dans @Jules.

import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="whitegrid")

titanic = sns.load_dataset("titanic")

g = sns.barplot(x="class", y="survived", hue="sex",
                data=titanic, palette="muted")
g.set_yscale("log")

enter image description here

22
Michael Hall

Vous pouvez utiliser les commandes Matplotlib après avoir appelé factorplot. Par exemple:

import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="whitegrid")

titanic = sns.load_dataset("titanic")

g = sns.factorplot("class", "survived", "sex",
                   data=titanic, kind="bar",
                   size=6, palette="muted", legend=False)
g.fig.get_axes()[0].set_yscale('log')
plt.show()

enter image description here

14
Jules

Si vous rencontrez le problème de la disparition des barres lors de la définition de l'échelle de journal à l'aide des solutions précédentes, essayez d'ajouter log=True à l'appel de la fonction seaborn à la place. (Je manque de réputation pour commenter les autres réponses).

En utilisant sns.factorplot:

import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="whitegrid")

titanic = sns.load_dataset("titanic")

g = sns.factorplot(x="class", y="survived", hue="sex", kind='bar',
                   data=titanic, palette="muted", log=True)
g.ax.set_ylim(0.05, 1)

En utilisant sns.barplot:

import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="whitegrid")

titanic = sns.load_dataset("titanic")

g = sns.barplot(x="class", y="survived", hue="sex",
                data=titanic, palette="muted", log=True)
g.set_ylim(0.05, 1)
5
rvf