我想用Python中的QQ绘图来绘制一个理论分布的值数组。理想情况下,我希望使用库Plotnine创建绘图。
但当我试图创造情节的时候,我会收到错误信息.下面是我的代码和示例数据:
from scipy.stats import beta
from plotnine import *
import statsmodels.api as sm
import numpy as np
n = 207
values = -1 + np.random.beta(n/2-1, n/2-1, 100) * 2 # my data
dist = beta(n/2-1, n/2-1, loc = -1, scale = 2) # theoretical distribution
# 1. try:
ggplot(aes(sample = values)) + stat_qq(distribution = dist)
# gives ValueError: Unknown continuous distribution '<scipy.stats._distn_infrastructure.rv_frozen object at 0x0000029755C5C070>'
# 2. try:
params = {'a':n/2-1, 'b':n/2-1, 'loc':-1, 'scale':2}
ggplot(aes(sample = values)) + stat_qq(distribution = 'beta', dparams = params)
# gives TypeError: '>' not supported between instances of 'numpy.ndarray' and 'int'有人知道我做错了什么吗?
当我尝试使用statsmodels绘图时,它似乎工作得很好:
sm.qqplot(values, dist, line = '45')

一如既往,任何帮助都是非常感谢的!
发布于 2022-10-18 20:31:36
这是一个plotnine,在修复之前,您可以尝试以元组的形式传递参数,而不是dict。但是,要小心参数的位置匹配(a,b,loc,刻度)。
编辑
在当前的plotnine开发版本中,错误是固定的,您可以使用dict传递参数。
https://stackoverflow.com/questions/70798622
复制相似问题