Как масштабировать ось Y морского судна с зазором штанги?

Я использую factorplot(kind="bar").

Как масштабировать ось y, например, с помощью логарифмической шкалы?

Я попытался поработать с сюжетными осями, но это так или иначе испортило планшета, поэтому сначала попробуйте свое решение, чтобы убедиться, что оно действительно работает.

Ответ 1

Вы можете использовать команды Matplotlib после вызова factorplot. Например:

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

Ответ 2

Учитывая ваш вопрос, упоминающий barplot, я подумал, что добавлю решение для этого типа графика также, поскольку оно отличается от factorplot в решении @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

Ответ 3

Если вы столкнулись с проблемой исчезновения баров при настройке логарифмической шкалы с использованием предыдущих решений, попробуйте вместо этого добавить log=True к вызову функции морского шлюза. (Мне не хватает репутации, чтобы прокомментировать другие ответы).

Использование 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)

Использование 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)