stan-dev/bayesplot

mcmc_areas_ridges don't overlay when using scale_y_discrete

Open

#287 opened on Aug 2, 2022

View on GitHub
 (4 comments) (0 reactions) (1 assignee)R (93 forks)github user discovery
good first issue

Repository metrics

Stars
 (439 stars)
PR merge metrics
 (PR metrics pending)

Description

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"))

Contributor guide