2017-10-12 3 views
1

私は海のkdeplotを使ってデータの分布を描いています。カーブ分布の陰影部分の色を変えて、色を変えてみましょう

sns.kdeplot(data['numbers'], shade=True) 

"ハイ"パーセンタイルと "ロー"パーセンタイルを示す線の陰影部分を3つに分割したいとします。私が3つの異なる色で網掛け領域を塗ることができれば理想的です。

私はそれをどうやって行うことができますか?

私は色の間のカットオフ値を決めることができる以下のようなものを見たいと思います。

enter image description here

+0

私は海軍がカーブを埋めるための直接的なコマンドを持っているかどうかわかりません。しかし、matplotlib(これは依存関係からmatplotlibも持っています)を使用すると、これを行うことができます。 [fill_betweenの例](https://matplotlib.org/examples/pylab_examples/fill_between_demo.html)を確認してください。 – armatita

+0

@armatita私は既にfill_betweenを見ました。これは流通だから、それは歴史記録のようだ。 yが自動的に生成されます。私はx値を与えるだけです。それは海底に置く必要はなく、matplotlibでこれと同様のものを生成することもできます。 – BKS

+0

非常に高いレベルのプロットですが、matplolibで完全に再現可能です。私の推測では、海軍の[kdeplot](https://seaborn.pydata.org/generated/seaborn.kdeplot.html)は[scipy.stats.gaussian_kde](https://docs.scipy.org/doc/scipy)を使用しています/reference/generated/scipy.stats.gaussian_kde.html)。その複雑さはもう少し複雑ですが、それほど多くはありません。 – armatita

答えて

1

だから私はそれを行う方法を考え出しました。私はseabornプロットからxとyの配列を取得し、次にfill_betweenを使ってカーブの下の色にします。

points = sns.kdeplot(data['numbers'], shade=True).get_lines()[0].get_data() 

x = points[0] 
y = points[1] 

plt.fill_between(x,y, where = x >=0.75, color='r') 
plt.fill_between(x,y, where = x <=0.1, color='g') 
plt.fill_between(x,y, where = (x<=0.75) & (x>=0.1), color='y') 
+0

あなたの問題を解決した場合は、回答を受け入れることを忘れないでください。 –

関連する問題