probplot
機能は、プロットをカスタマイズするためのAPIを公開していません。代わりにmatplotlib
(つまりpylab
)機能を使用して、probplot
が返された後にプロットをカスタマイズできます。ここで(ipythonセッションで)これを行う方法の1つです。
まず、輸入:
In [107]: pp = stats.probplot(x, dist=stats.gamma, sparams=(2.74,), plot=pylab)
最初の行のalpha
値を設定します。
In [105]: np.random.seed(8675309)
In [106]: x = np.random.gamma(3.0, scale=2.1, size=50)
は、確率プロットを生成します。
In [102]: import numpy as np
In [103]: import pylab
In [104]: from scipy import stats
は、プロットのいくつかのデータを生成します現在の軸に表示されます。これは、赤い線をプロットする前に点をプロットしているので、わずかに「危険」です。probplot
In [108]: ax = pylab.gca() # Get the current axes.
In [109]: line0 = ax.get_lines()[0] # Get the first "line" in the axes.
In [110]: line0.set_alpha(0.25) # Set the alpha for the "line".
ここで生成されたプロットです。個人的に
が、しかし、私はプロットの完全な制御を取ることを好みます。あなたは、プロットの自動生成を無効にするplot
引数にNone
を渡すことができ、あなたはmatplotlib
を使っているようしかし、プロットを生成:
In [185]: import matplotlib.pyplot as plt
In [186]: (osm, osr), (slope, intercept, r) = stats.probplot(x, dist=stats.gamma, sparams=(2.74,), plot=None)
In [187]: plt.plot(osm, osr, 'o', alpha=0.5)
Out[187]: [<matplotlib.lines.Line2D at 0x11469a6d8>]
In [188]: plt.plot(osm, slope*osm + intercept, 'k', alpha=0.5, linewidth=1)
Out[188]: [<matplotlib.lines.Line2D at 0x114695a90>]
In [189]: plt.grid(alpha=0.15)
In [190]: plt.xlabel('Theoretical Quantiles')
Out[190]: <matplotlib.text.Text at 0x11440bac8>
In [191]: plt.ylabel('Sample Quantiles')
Out[191]: <matplotlib.text.Text at 0x1142efda0>
これは素晴らしいです。ありがとうございました。 – JAG2024