subplot() not producing the interactive equivalent of gridExtra::grid.arrange()
Nobody has claimed this yet.
- Dominant language
- R
- Stars
- 2.7k
- Forks
- 641
- PR merge metrics
- No merged PRs in 30d
Description
Given:
library(ggplot2)
library(gridExtra)
library(plotly)
library(colorRamps)
d <- data.frame(x=sample(1:10)/10, y=sample(1:10)/10, z=sample(1:10)/10, c=sample(LETTERS[1:5],size=10,replace=TRUE))
g1 <- ggplot(d) +
geom_point(aes(x=x, y=y, fill = z),
pch=21,size=4) +
facet_wrap(~c,labeller = label_both) +
scale_fill_gradientn(colors = matlab.like2(16),limits=c(0, 100)) +
xlim(c(0,1)) + ylim(c(0,1)) +
coord_fixed(ratio = 1) +
theme(legend.position=c(0.85,0.2), legend.background=element_blank()) +
labs(fill = "%")
g2<- g1+ggtitle("Plot 2")
g3<- g1+gtitle("Plot 3")
g4<- g1+ggtitle("Plot 4")
g1<- g1+ggtitle("Plot 1")
p = list(g1,g2,g3,g4) %>% map(~.x + labs(x=NULL, y=NULL))
yleft= "X"
xbottom= "Y"
grid.arrange(grobs=p,bottom = xbottom, left = yleft,nrow=2)
I want to get the same plot but with interactive browsing of the values. I try:
pg1 <- ggplotly(g1)
pg2 <- ggplotly(g2)
pg3 <- ggplotly(g3)
pg4 <- ggplotly(g4)
Individual plots are ok:
pg1
But
subplot(list(pg1, pg2,pg3,pg4), nrows=2,
shareX=FALSE, shareY=FALSE,titleX=TRUE,titleY=TRUE)
or
subplot(list(pg1, pg2,pg3,pg4), nrows=2,
shareX=FALSE, shareY=FALSE,titleX=FALSE,titleY=FALSE)
result into:
Which is almost good but displays only 1 title (and in the wrong place) and no axes titles.
I try
subplot(list(pg1, pg2,pg3,pg4), nrows=2,
shareX=TRUE, shareY=TRUE,titleX=FALSE,titleY=FALSE)
and
subplot(list(pg1, pg2,pg3,pg4), nrows=2,
shareX=TRUE, shareY=TRUE,titleX=TRUE,titleY=TRUE)
and the result is even worse:
Is this a bug or am I doing something wrong? Is there an alternative way to get the interactive version of the grid?
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the reproduced ggplotly() and subplot() calls in the issue, comparing their output with grid.arrange(). Trace how subplot() handles multiple plot titles, shared axes, and axis titles. Done means the four converted plots retain the expected titles and axes in a two-row interactive arrangement, or the behavior is documented as a limitation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- r
- Domain
- data-visualization
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100