あなたは曲線の下にあるデータを使用することができ、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曲線上のある点に点を描きたいと思っています。
- ドキュメントを参照してください。 distplot関数は、私たちが望むことをする引数を持っていますか?残念ながら違います。
- この関数はオブジェクトを返しますか?はい。それは曲線ですか?残念ながら違います。代わりに、それはmatplotlib軸です。 (それを見つけると
type()
)
- matplotlibの軸は何ですか? the documentationを読んでください。 Uff、それはかなり重いですが、私たちはメソッドにつまずいています
axes.get_lines()
;曲線は線でなければならないので、それは助けになるはずです。
- これらの行が何であるかを調べてください:
Line2D
オブジェクトです。再度ドキュメントを見ると、メソッドget_data
があることが分かります。これで曲線のデータが得られました。すばらしいです!
- この時点で、対応するy値を受け取るためにx値で呼び出すことができる関数があればさらに良いでしょう。今は、私たち自身がその機能を見つける必要があるようです。
- カーブのデータが
x
とy
の場合、与えられたx値のy値はどのようにして求められますか?データは離散的なので、補間する必要があります。 "interpolate"を探すと& "python"は最終的にnumpy.interp
になります。これは、ポイントを描くために必要な座標を提供します。
- ポイントを描画する方法を確認します。それは簡単です。そのための多くの例があります。
これだけです。
これはうまくいきます。私はフォローアップの質問があります。どのようにこれを知って行くのですか?それともどうやってこれを知ったのですか?あなたがたどった構造化されたパスがあるか、これは経験によって得られた難しい知識ですか?私は経験豊富なプログラマーで、Pythonには新しく、Seabornには新しいプログラマーですが、しばらくプログラミングしています。この知識を得る方法はありますか? – Bharat
問題の説明から解決策がどのように得られるかを含めるように答えを更新しました。そのプロセスを理解するのに役立つかもしれません。 – ImportanceOfBeingErnest
プロセスの優れた説明をありがとう。敬具。バラット – Bharat