Open mayank7j-shell opened 2 months ago
Hello,
I had the same problem and used this work around that may help people looking at this issue.
margin <- c(0.05, # left
0.05, # right
0.05, # top
0.05) # bottom
heights = rep(1/numberOfRows, numberOfRows)
heights[1] <- heights[1] - margin[3]
heights[numberOfRows] <- heights[numberOfRows] - margin[4]
# heights <- heights + sum(margin[3:4]) / numberOfRows
numberOfCols <- ceiling(length(plotList) / numberOfRows)
widths = rep(1/numberOfCols, numberOfCols)
widths[1] <- widths[1] - margin[1]
widths[numberOfCols] <- widths[numberOfCols] - margin[2]
widths <- widths + sum(margin[1:2]) / numberOfCols
# display all plots together using subplot
subplot(plotList, nrows = numberOfRows, margin = margin, heights = heights, widths = widths, titleX = TRUE, titleY = TRUE)
the plots in the top row and bottom row appear with less spacing
I think the plots on the 1st and last row have more spaces than the other (cf. subplots.R) because the corresponding margins are not removed from their start/end coordinates. The suggested workaround will remove the margins spaces from their default allocated heights so all plots can have the same apparent size.
However doing that will lead to a total heights < 1 and in this case, the plots are centered So we end up with blank spaces at the top/bottom/left/right (it more or less force the top/left and bottom/right margins to the fist and last plots). This could be fine but to avoid that, the workaround add back the missing space evenly to all the plots (with your example, it works for the columns width but not for the rows heights, where this issue #2377 seems to occur...).
The workaround is not perfect though, especially if the margins are bigger than 1/numberOfRows
or 1/numberOfCols
the heights/width will be negative and will not be accepted by subplot()
.
Best regards, JD
Description:
When attempting to display multiple histograms using
subplot
from theplotly
package, the plots in the top row and bottom row appear with less spacing, making them difficult to analyze. This issue is primarily reproducible when there are large number of visualizations to plot together.Here is a minimal reprex for the same:
Expected Behavior: Each histogram should have equal margins, with appropriate spacing and labels visible.
Screenshots