2017-12-05 3 views
1

alpha値を設定するか、確率プロット内の点を少し半透明にする何らかの方法を設定しようとしています。これは私のコードです。確率プロットで透明ドットを設定する

import numpy as np 
import pylab 
import scipy.stats as stats 
stats.probplot(x, dist=stats.gamma, sparams=(2.74,),plot=pylab) 

これはプロットのように見えます。どのようにドットを少し半透明にするためのヒント?私は美的な目的のためにこれをしたいと思います。

enter image description here

答えて

2

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


が、しかし、私はプロットの完全な制御を取ることを好みます。あなたは、プロットの自動生成を無効にする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> 

plot

+0

これは素晴らしいです。ありがとうございました。 – JAG2024

関連する問題