2017-04-22 24 views
2

特定のX値に対応するSeabornディストリプロット上の点を濃度曲線上またはその下になるようにプロットする必要があります。ここでは、次のURLからdistplotさ: From the Seaborn site - distplot examplesPython Seaborn Distplot指定されたX値に対応するY値

ここでは、コードとイメージである:

enter image description here

したがって、たとえば、上に示したプロットでは、私はプログラム的に何を決定する必要があります濃度曲線上のX値0に対応するY軸値。図から、それは約0.37のどこかのようです。私のプログラムでそれをどうやって得ることができますか?

これを行うことができたら、表示されているプロット、つまりどのコード行にそれを表示するにはどうすればよいでしょうか。私はR視覚化のセットをPythonに翻訳しています。

enter image description here

が曲線に示されているポイントを参照してください:Rにおける次のプロットは、私が達成しようとしているかを示して?描かれる点の値はたくさんありますが、描くのを手助けすれば、残りをやろうとすることができます。私はMatplotlibパッケージとSeabornパッケージの両方の初心者です。

答えて

2

enter image description here

あなたは曲線の下にあるデータを使用することができ、distplotのKDE曲線上のポイントのy座標を得るために。ラインのget_dataメソッドを使用して、ラインプロットからデータを取得することができます。 次に、興味のあるポイントのデータを補間することができます。 numpy.interp。問題と

スタート:このソリューションを入手する方法についてはコメントで求められている

import seaborn.apionly as sns 
import numpy as np; np.random.seed(0) 
import matplotlib.pyplot as plt 

x = np.random.randn(100) 
ax = sns.distplot(x, hist_kws={"ec":"k"}) 
data_x, data_y = ax.lines[0].get_data() 

xi = 0 # coordinate where to find the value of kde curve 
yi = np.interp(xi,data_x, data_y) 
print ("x={},y={}".format(xi, yi)) # prints x=0,y=0.3698 
ax.plot([0],[yi], marker="o") 
plt.show() 


。私たちはディストリビュートを持っており、kde曲線上のある点に点を描きたいと思っています。

  1. ドキュメントを参照してください。 distplot関数は、私たちが望むことをする引数を持っていますか?残念ながら違います。
  2. この関数はオブジェクトを返しますか?はい。それは曲線ですか?残念ながら違います。代わりに、それはmatplotlib軸です。 (それを見つけるとtype()
  3. matplotlibの軸は何ですか? the documentationを読んでください。 Uff、それはかなり重いですが、私たちはメソッドにつまずいていますaxes.get_lines();曲線は線でなければならないので、それは助けになるはずです。
  4. これらの行が何であるかを調べてください:Line2Dオブジェクトです。再度ドキュメントを見ると、メソッドget_dataがあることが分かります。これで曲線のデータが得られました。すばらしいです!
  5. この時点で、対応するy値を受け取るためにx値で呼び出すことができる関数があればさらに良いでしょう。今は、私たち自身がその機能を見つける必要があるようです。
  6. カーブのデータがxyの場合、与えられたx値のy値はどのようにして求められますか?データは離散的なので、補間する必要があります。 "interpolate"を探すと& "python"は最終的にnumpy.interpになります。これは、ポイントを描くために必要な座標を提供します。
  7. ポイントを描画する方法を確認します。それは簡単です。そのための多くの例があります。

これだけです。

+0

これはうまくいきます。私はフォローアップの質問があります。どのようにこれを知って行くのですか?それともどうやってこれを知ったのですか?あなたがたどった構造化されたパスがあるか、これは経験によって得られた難しい知識ですか?私は経験豊富なプログラマーで、Pythonには新しく、Seabornには新しいプログラマーですが、しばらくプログラミングしています。この知識を得る方法はありますか? – Bharat

+0

問題の説明から解決策がどのように得られるかを含めるように答えを更新しました。そのプロセスを理解するのに役立つかもしれません。 – ImportanceOfBeingErnest

+0

プロセスの優れた説明をありがとう。敬具。バラット – Bharat

関連する問題