用statsmodel改变图形大小

时间:2015-02-14 15:46:31

标签: 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对图形大小没有影响。关于如何解决这个问题的想法(以及为什么这个方法不起作用)?

5 个答案:

答案 0 :(得分:6)

您可以在绘图前使用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')

plot

答案 1 :(得分:5)

qqplot_2samples函数有一个ax参数,允许您指定 应绘制绘图的matplotlib轴对象。如果你不供应 ax,然后为您创建一个新的轴对象。

所以,作为cel解决方案的替代方案,如果你想创建自己的数字, 那么你也应该将图形的轴对象传递给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()

答案 2 :(得分:0)

这是一个很好的解决方案,也适用于其他地块-我赞成。这是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()

答案 3 :(得分:0)

在绘制之前只使用plt.rc("figure", figsize=(16,8))

答案 4 :(得分:0)

检查此链接here.

我使用了plt.rc()

plt.rc("figure", figsize=(10,6))
sm.graphics.tsa.plot_acf(nifty_50['close_price'], lags=36000);