A simple plottng question, I think

Hi all,

I’m trying to change the color of a trace plot in Stan. I have used


followed by mcmc_trace, and this works fine in almost all cases. It seems not possible to change the color in stan_trace. In any case, I am now encountering the following problem. I am running

testtrace <- mcmc_trace(BayesLCA,pars=c("alpha", "p","p_prod"))

and getting the message

Error in `select_parameters()`:
! Some 'pars' don't match parameter names: alpha, p, p_prod FALSE
Run `rlang::last_error()` to see where the error occurred.

However, if I run stan_trace, it produces the plots as expected, but with different colors for the different chains, which I need to change. I’m not sure why this is happening, and it hasn’t happened in other analyses.

Thanks in advance.


I’m not sure why the error is occurring, but mcmc_trace and stan_trace are using ggplot2 under the hood and they return a ggplot object. You can therefore use any of ggplot’s functions on them, including using ggplot’s scale_colour_*** functions to change the colors. For example:


x <- example_mcmc_draws()



mcmc_trace(x) +

mcmc_trace(x) +


# I kept getting parsing errors when trying to load the built-in example models, 
#  so I've created the model below for illustration
stan.mod = "data {
  int<lower=0> N;
  vector[N] x1;
  vector[N] x2;
  vector[N] y;
parameters {
  real alpha;
  real beta1;
  real beta2;
  real<lower=0> sigma;
model {
  y ~ normal(alpha + beta1*x1 + beta2*x2, sigma);

dat = list(N=10, x1=rnorm(10), x2=rnorm(10), y=rnorm(10))
fit = stan(model_code=stan.mod, data=dat, verbose=FALSE)

stan_trace(fit, pars=c("alpha", "beta1")) 

stan_trace(fit, pars=c("alpha", "beta1")) +
  scale_colour_manual(values=hcl(0, 0, seq(5,85,length=4)))

stan_trace(fit, pars=c("alpha", "beta1")) +