2016-03-08 34 views
2

所以我正在使用statsmodels.graphics.gofplots.qqplot()繪製一個正常的Q-Q圖。如何更改statsmodels qqplot的繪圖屬性? (Python)

模塊使用matplotlib.pyplot創建圖形實例。它很好地繪製了圖表。

但是,我想繪製alpha = 0.3的標記。

有沒有辦法做到這一點?

下面是代碼的示例:

import numpy as np 
import statsmodels.api as sm 
import matplotlib.pyplot as plt 

test = np.random.normal(0,1, 1000) 

sm.qqplot(test, line='45') 
plt.show() 

和輸出數字: QQ Plot

回答

1

qqplot返回其可用於獲得lines然後可以使用set_alpha

修改的 figure對象
fig = sm.qqplot(test, line='45'); 

# Grab the lines with blue dots 
dots = fig.findobj(lambda x: hasattr(x, 'get_color') and x.get_color() == 'b') 

[d.set_alpha(0.3) for d in dots] 

enter image description here

顯然你有點重疊的點,所以即使他們有一個低α值,他們堆積在另一個之上,他們看起來更不透明。

0

您可以使用statsmodels.graphics.gofplots.ProbPlot類,它有qqplot方法通過matplotlib pyplot.plot ** kwargs。

import numpy as np 
import statsmodels.api as sm 
import matplotlib.pyplot as plt 

test = np.random.normal(0, 1, 1000) 

pp = sm.ProbPlot(test, fit=True) 
qq = pp.qqplot(marker='.', markerfacecolor='k', markeredgecolor='k', alpha=0.3) 
sm.qqline(qq.axes[0], line='45', fmt='k--') 

plt.show() 

enter image description here

+0

啊,真好!不知道這件事。 –