web-dev-qa-db-ja.com

棒グラフでシーボーンのy軸をスケーリングする方法は?

factorplot(kind="bar")を使用しています。

たとえば対数スケールを使用して、y軸をスケーリングするにはどうすればよいですか?

プロットの軸をいじくり回してみましたが、それは常に棒プロットを何らかの方法で台無しにしていたので、まずソリューションを試して、それが本当に機能することを確認してください。

24
user124114

あなたの質問がbarplotに言及していることを考えると、@ Julesソリューションのfactorplotとは異なるため、そのタイプのプロットのソリューションも追加すると思いました。

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

factorplotを呼び出した後、Matplotlibコマンドを使用できます。例えば:

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

以前のソリューションを使用してログスケールを設定するときにバーが消える問題に直面している場合は、代わりにlog=Trueをseaborn関数呼び出しに追加してみてください。 (私は他の答えについてコメントする評判に欠けています)。

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)
5
rvf