pystan .plot()绘制两次跟踪摘要

时间:2016-06-05 21:17:12

标签: python jupyter stan

这可能是一个愚蠢的问题,但每当我使用.plot()函数时,它会将摘要绘制两次。任何人都知道,为什么会这样做以及如何阻止它? pystan.plot()

如你所知,我正在使用jupyter笔记本电脑。

任何stan模型(以及两个单独的安装)都会发生这种情况

此代码会为我带来问题

import pystan 
import numpy as np
model_string = """
data { 
    int<lower=0> N;
    int y[N]; 
}
parameters {
    real<lower=0, upper=1> theta;
}
model {
    theta ~ beta(1,1);
    y ~ bernoulli(theta);
}
"""
N = 50
z = 10
y = np.append(np.repeat(1, z), np.repeat(0, N - z))
dat = {'y':y,
      'N':N}

fit = pystan.stan(model_code=model_string, data=dat, iter=1000, warmup=200, thin=1, chains = 3)
fit.plot()

2 个答案:

答案 0 :(得分:3)

这是由%matplotlib inline语句绘制的,而不是您想要的。 StanFit4Model.plot方法调用matplotlib.pyplot.subplot,当您的笔记本具有%matplotlib inline时,该调用本身将绘制一个图表。然后该方法返回Figure对象。如果你没有捕获它,你的笔记本决定将它作为图像显示给你而不是打印类型,你得到双重图。

您可以通过捕获输出Figure来输出单个图。从

更改您的代码
fit.plot()

改为

fig = fit.plot()

答案 1 :(得分:0)

在.plot()之后加上分号也可以解决问题。

https://github.com/stan-dev/pystan/issues/230那里学到了