Seaborn distplotは、複数のプロットされたデータセットの最大範囲をキャプチャするように自動的にy軸を再スケーリングするように設定できますか?seaborn(distplot)yaxisは自動的に再スケーリングされますか?
Seabornを使用してプロットのバッチを実行する場合、最大頻度値を上げずにデータが提供されることは避けられないことがあります。これが起こると、作成されたプロットyaxisはデータをカットします。ただし、データが最大値で提供される場合は、sns.distplot()
は問題ありません。
これはMatplotlib.patches
を介して固定または単にax.autoscale()
(後に提案してくれてありがとう@ImportanceOfBeingErnest)を呼び出すことによって、しかし、いずれかの "kludgey" と思われることができます...
シンプル加工した例:
# Import modules
import numpy as np
from scipy.stats import truncnorm
import matplotlib.pyplot as plt
import seaborn as sns; sns.set(color_codes=True)
# Make some random data (credit: [@bakkal's Answer][3])
scale = 3.
range = 10
size = 100000
X = truncnorm(a=-range/scale, b=+range/scale, scale=scale).rvs(size=size)
# --- first time to show issue
# Now plot up 1st set of data (with first dataset having high Y values)
ax= sns.distplot(X*4)
# Now plot up two more
for i in np.arange(1, 3):
sns.distplot(X*i, ax=ax)
plt.show()
# --- Second time with a "kludgey" fix
ax = sns.distplot(X*4)
# Now plot up two more
for i in np.arange(1, 3):
sns.distplot(X*i, ax=ax)
# Now force y axis extent to be correct
ax.autoscale()
plt.show()
# --- Third time with increasing max in data provided
ax= sns.distplot(X)
# Now plot up two more
for i in np.arange(2, 4):
sns.distplot(X*i, ax=ax)
plt.show()
seaborn 8.1でこの動作を再現できないため、最も簡単な解決策はseabornパッケージを更新することです。 'ax.autoscale()'を試してみてください。 – ImportanceOfBeingErnest
@ImportanceOfBeingErnestの入力をありがとう。私はあなたのコメントを見る前に[github issue](https://github.com/mwaskom/seaborn/issues/1329)を追加し、それは0.8.1で修正されました。 '' ax.autoscale() ''に言及してくれてありがとうございます。これは[patches](https://matplotlib.org/api/_as_gen/matplotlib.patches.Patch.html)よりも優れています。私はそれをQに加え、あなたに信用します。 – tsherwen