我正在尝试使用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对图形大小没有影响。关于如何解决这个问题的想法(以及为什么这个方法不起作用)?
答案 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')
答案 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);