plotly.R icon indicating copy to clipboard operation
plotly.R copied to clipboard

subplot() doesn't account for dual axes

Open TriLe965 opened this issue 7 years ago • 3 comments

I think there is something wrong with the subplot function when there is yaxis2

I tried to use subplot with 2 plots that have yaxis2. Each plot looks like this: image

foo_plot <- function(n) {
  x <- rnorm(n)
  den <- density(x)
  p <- plot_ly()
  p <- add_trace(p, x=x, type="histogram", name="Histogram",
    marker=list(line=list(color="#000", width=1), color="#555"))
  p <- add_trace(p, x=den$x, y=den$y, yaxis="y2", name="Density",
    type="scatter", mode="lines", line=list(color="#222"))
  p <- layout(p,
    yaxis2=list(overlaying="y", side="right", rangemode="nonnegative",
      showgrid=F, showline=T, ticks="outside"),
    yaxis=list(showline=T, ticks="outside"))
  return(p)
}

p <- subplot(foo_plot(1000), foo_plot(1000), nrows=2, shareX=F, shareY=F)

The density curves were missing when I merge the two plots. image

This is the result of sessionInfo() image

TriLe965 avatar Feb 23 '18 05:02 TriLe965

try this https://github.com/plotly/plotly.R/issues/954#issuecomment-453872899

PAllen0518 avatar Dec 02 '21 15:12 PAllen0518

We got tripped by this bug as well, and I think I found a way to solve the problem.

Internally, subplot translates names of all Y axes in all the subplots to unique names. Unfortunately, the "overlaying" parameter is not getting mapped. That is equivalent to reconfiguring your plots arbitrarily, which causes issues. The workaround of manually guessing the y axis rename and setting "overlaying" parameter to the end result works, but frankly, this is insane and we can do better. I will submit a PR, but I am not familiar with this project that much, so I'll need someone to thoroughly review it.

romanzenka avatar Nov 08 '24 16:11 romanzenka

I reran the original reprex with my bugfix, obtaining this:

Image

I believe that is the desired output (modulo some bad spacing with the legend).

romanzenka avatar Nov 08 '24 17:11 romanzenka