Python:多个QQ图

时间:2019-03-13 13:20:11

标签: python plot

我是新来的,通常来自R。 我想用多行代码创建一个QQ图。

我有一个Beta分布式数据集 我想为Beta分布尝试不同的参数,并在一个 QQ图中进行比较,以便更好地进行比较。如果我尝试以下代码,则每个图都有相同的颜色,并且我得到了3条QQ行。 是否可以将所有这三个QQ图整合为一个?
希望您能解决我的问题

import scipy.stats as stats
import numpy
x=numpy.random.beta(2, 3, size=100)
stats.probplot(x, dist=stats.beta, sparams=(2,3),plot=plt,fit=False)
stats.probplot(x, dist=stats.beta, sparams=(1,2),plot=plt,fit=False)
stats.probplot(x, dist=stats.beta, sparams=(1,4),plot=plt,fit=False)

有偿奖励

1 个答案:

答案 0 :(得分:0)

好的,stats.probplot让我有些困惑。该文档明确指出:

  

probplot生成概率图,不应将其与   Q-Q或P-P图。

但我能找到的所有资料都指出,概率图是指Q-Q图或P-P图。走吧。

无论如何,就我而言,您生成的 Q-Q图。

在我看来,fit=False中的选项stats.probplot被忽略,并且总是在数据中添加回归线。

无论如何,要获得所需的结果,我们可以显式创建一个matplotlib轴实例,并使用get_lines方法删除不需要的回归线并更改标记颜色。

import scipy.stats as stats
import numpy as np
import matplotlib.pyplot as plt

plt.style.use('seaborn')

x = numpy.random.beta(2, 3, size=100)

fig, ax = plt.subplots(1, 1, figsize=(6, 4))
stats.probplot(x, dist=stats.beta, sparams=(2,3), plot=plt, fit=False)
stats.probplot(x, dist=stats.beta, sparams=(1,2), plot=plt, fit=False)
stats.probplot(x, dist=stats.beta, sparams=(1,4), plot=plt, fit=False)

# Remove the regression lines
ax.get_lines()[1].remove()
ax.get_lines()[2].remove()
ax.get_lines()[3].remove()

# Change colour of scatter
ax.get_lines()[0].set_markerfacecolor('C0')
ax.get_lines()[1].set_markerfacecolor('C1')
ax.get_lines()[2].set_markerfacecolor('C2')

# Add on y=x line
ax.plot([0, 1], [0, 1], c='C3')

这给了我以下内容,我认为这次确实是您想要的:

enter image description here