mlg*_*080 3 python matplotlib statsmodels
我正在尝试使用statsmodel包制作QQ图.但是,该数字的分辨率非常低,以至于我无法在演示中使用结果.
我知道要使networkX图形绘制出更高分辨率的图像我可以使用:
plt.figure( figsize=(N,M) )
networkx.draw(G)
并改变N和M的值以获得理想的结果.
但是,当我尝试使用statsmodel包中的QQ图同样的方法时,它似乎对结果图的大小没有影响,即,当我使用时
plt.Figure( figsize = (N,M) )
statsmodels.qqplot_2samples(sample1, sample2, line = 'r')
改变M和N对数字大小没有影响.关于如何解决这个问题的想法(以及为什么这个方法不起作用)?
您可以使用在绘图前mpl.rc_context临时设置默认值figsize.
import numpy as np
import matplotlib as mpl
from statsmodels.graphics.gofplots import qqplot_2samples
np.random.seed(10)
sample1 = np.random.rand(10)
sample2 = np.random.rand(10)
n, m = 6, 6
with mpl.rc_context():
    mpl.rc("figure", figsize=(n,m))
    qqplot_2samples(sample1, sample2, line = 'r')

这是一个很好的解决方案,也适用于其他情节 - 我赞成它。这是 acf 和 pacf 图的实现。
N, M = 12, 6
fig, ax = plt.subplots(figsize=(N, M))
plot_pacf(df2, lags = 40, title='Daily Female Births', ax=ax)
plt.show()
该qqplot_2samples函数具有一个ax参数,允许您指定应在其上绘制绘图的matplotlib轴对象。如果您不提供ax,则会为您创建一个新的axis对象。
因此,作为cel解决方案的替代方法,如果您希望创建自己的图形,则还应该将图形的axes对象传递给qqplot_2samples:
sm.qqplot_2samples(sample1, sample2, line='r', ax=ax)
例如,
import scipy.stats as stats
import matplotlib.pyplot as plt
import statsmodels.api as sm
N, M = 6, 5
fig, ax = plt.subplots(figsize=(N, M))
sample1 = stats.norm.rvs(5, size=1000)
sample2 = stats.norm.rvs(10, size=1000)
sm.qqplot_2samples(sample1, sample2, line='r', ax=ax)
plt.show()