如何更改 statsmodels qqplot 的绘图属性?(Python)

Ash*_*h B 6 python statistics matplotlib statsmodels

所以我正在使用statsmodels.graphics.gofplots.qqplot()绘制一个正常的 QQ 图。

该模块使用 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()
Run Code Online (Sandbox Code Playgroud)

和输出图: QQ图

su7*_*u7k 8

您可以使用具有qqplot方法的statsmodels.graphics.gofplots.ProbPlot类来传递 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()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


Sue*_*ver 5

qqplot返回一个figure对象,该对象可用于获取lines然后可以使用set_alpha

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]
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

显然,您有一些点重叠,因此即使它们的 alpha 值较低,但在它们彼此堆叠的情况下,它们看起来更不透明。