bayesplot icon indicating copy to clipboard operation
bayesplot copied to clipboard

mcmc_areas_ridges don't overlay when using scale_y_discrete

Open SamPassmore opened this issue 3 years ago • 0 comments

Hi,

First - thanks to all developers for creating such a useful plotting package.

I have come across a bug in mcmc_areas_ridges recently, which means that the density plots created in mcmc_areas_ridges don't overlay properly when used in conjunction with scale_y_discrete. I think this worked in the past, since I was reusing code from an earlier project which didn't have this problem - although I can't be sure.

Here is what the plot looks like without using scale_y_discrete image

And here is the same plot, using scale_y_discrete to reorder the categories in the y axis image

here is a working example:

library(bayesplot)

n = 100

posterior = 
  data.frame(x = rnorm(n),
             y = rnorm(n),
             z = rnorm(n),
             a = rnorm(n))

# Overlay works properly
mcmc_areas_ridges(posterior, prob = 0.89,
                  pars = c("x", "y", "z"))

# Use scale_y_discrete to reorder y axis means overlapping fails
mcmc_areas_ridges(posterior, prob = 0.89,
                  pars = c("x", "y", "z")) + 
  scale_y_discrete(labels = c("z", "y", "x"))

# Don't reorder, but still use scale_y_discrete - overlapping fails
mcmc_areas_ridges(posterior, prob = 0.89,
                  pars = c("x", "y", "z")) + 
  scale_y_discrete(labels = c("x", "y", "z"))

# final test that should do nothing
mcmc_areas_ridges(posterior, prob = 0.89) + 
  scale_y_discrete(labels = c("z", "y", "x", "a"))

SamPassmore avatar Aug 02 '22 02:08 SamPassmore