web-dev-qa-db-ja.com

Seabornを使用して、分布プロット(sns.distplot)に垂直線を追加するにはどうすればよいですか

seaborn.pydata.org および Python DataScience Handbook の例を使用して、次のスニペットで組み合わせ分布プロットを作成できます。

コード:

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

# some settings
sns.set_style("darkgrid")

# Create some data
data = np.random.multivariate_normal([0, 0], [[5, 2], [2, 2]], size=2000)
data = pd.DataFrame(data, columns=['x', 'y'])

# Combined distributionplot
sns.distplot(data['x'])
sns.distplot(data['y'])

プロット:enter image description here

このセットアップを垂直線と組み合わせて、次のようなしきい値を説明するにはどうすればよいですか。

enter image description here

私はここのようにmatplotlibでそれを行うことができることを知っています ターゲットをマークする線を持つ動的ヒストグラムサブプロット はい、seabornはmatplotlibの上に構築されることを知っています)。

ご提案ありがとうございます!

14
vestland

使うだけ

plt.axvline(2.8, 0,0.17)

他のラインでも同じです

ここでは、0.17の代わりに、maxx = max(data)などの変数を使用して分布の最大値を設定できます。 2.8はx軸上の位置です。ああ、y値は0から1の間でなければならないことを思い出してください。1はプロットの上部です。それに応じて値を再スケーリングできます。別の明らかなオプションは単純です

plt.plot([2.8, 2.8], [0, max(data)])
21
Sheldore