rggplot2plotegg# Aligning multiple plot in egg::ggarrange

I'm making a multiplot with egg::ggarrange for 5 figures. I'm wondering how can I aligning plot area of b,d and c,e in vertical position?

**PS: Figure b and c have to be in different decimal in y axis.**

```
library(egg)
library(ggplot2)
library(ggpubr)
data("ToothGrowth")
data("mtcars")
P1 <- ggplot(mtcars, aes(x = wt, y = mpg, color=cyl))+
geom_point() # Add correlation coefficient
P2 <- ggboxplot(ToothGrowth, x = "dose", y = "len",
color = "dose", palette = "jco")+
scale_y_continuous(breaks=c(10.5, 20.5, 30.5))
P3 <- ggdotplot(ToothGrowth, x = "dose", y = "len",
color = "dose", palette = "jco", binwidth = 1)
ggarrange(P1,
ggarrange(P2, P2, ncol = 2, labels = c("b", "d"), align = "h",widths = c(1.5,2)),
ggarrange(P3, P3, ncol = 2, labels = c("c", "e"), align = "h",widths = c(1.5,2)),
nrow = 3,
heights = c(1.5, 1, 1),
labels = "a"
)
```

Solution

You could just make the y scales equal, or at least have the same number of decimal points:

```
library(egg)
library(ggplot2)
library(ggpubr)
data("ToothGrowth")
data("mtcars")
P1 <- ggplot(mtcars, aes(x = wt, y = mpg, color=cyl))+
geom_point() # Add correlation coefficient
P2 <- ggboxplot(ToothGrowth, x = "dose", y = "len",
color = "dose", palette = "jco")+
scale_y_continuous(breaks=c(10.5, 20.5, 30.5))
P3 <- ggdotplot(ToothGrowth, x = "dose", y = "len",
color = "dose", palette = "jco", binwidth = 1) +
scale_y_continuous(breaks=c(10.5, 20.5, 30.5))
ggarrange(P1,
ggarrange(P2, P2, ncol = 2, labels = c("b", "d"), align = "h",widths = c(1.5,2)),
ggarrange(P3, P3, ncol = 2, labels = c("c", "e"), align = "h",widths = c(1.5,2)),
nrow = 3,
heights = c(1.5, 1, 1),
labels = "a"
)
```

- Installing R on Linux: configure: error: libcurl >= 7.28.0 library and headers are required with support for https
- How to do ensembles with time series using AICc?
- planes3d expands and draws the area based on the sphere's radius
- How to extract tag code itself using R, rvest
- How to Display or Print Contents of Environment in R
- How to use Windows user credentials for proxy authentication in R/RStudio
- R reticulate specifying python executable to use
- Replace multiple Instances of a variable name in an R function and save the modified function
- Standardizing address formatting in R
- How to fix "failed to load cairo DLL" in R?
- Using grepl to filter columns names in specific range of columns
- changing the legends in ggplot2 to have groups of similar labels
- How to keep only unique rows but ignore a column?
- convert string date to R Date FAST for all dates
- Add subgroup text to plotly pie chart
- R Shiny : adjust height of DT datatable when fillContainer=TRUE,
- Why do R external pointers' "unusual copying semantics" mean they should not be used stand-alone?
- How to extract somo character after a string with a number of word which can change in R
- What does `se` stand for in geom_smooth(..., se = FALSE)?
- How to find number of rows greater than any values in R
- Align text and reduce space between text and parentheses in plotly hover info box
- Remove outer box of geom_bar plot with broken y-axis
- How to use lag/lead in mutate with an initial value?
- Is it possible to have a Shiny ConditionalPanel whose condition is a global variable?
- counting elements in one list in another list
- How to vectorize nested loops in R?
- Replace NA values with an incrementing sequence starting from the previous non-NA value
- How can I calculate the number of uniques in a row within a species matrix?
- How to perform operations on pairs of rows, based on a "distinguishing" column's values
- Mutate variable based on previous observations