suknat - 1 year ago 70

R Question

I am trying to stack three plots on top of each other using the

`gridExtra`

`grid.arrange`

However, when I try to use my own plots, I get axes for each plot but no data, with all the formatting stripped out. Minimum working example:

`library(ggplot2)`

library(gridExtra)

popu_H0 <- seq(10, 30, length=100)

popu_H0_norm <- dnorm(popu_H0, mean = 20, sd = 4)

popu_H0_df <- as.data.frame(cbind(popu_H0, popu_H0_norm))

plot_H0 <- ggplot(popu_H0_df, aes(x=popu_H0, y=popu_H0_norm))

plot_H0 +

geom_line() +

theme(

text = element_text(size=20),

axis.title.x = element_text(vjust=0.1),

axis.text.x = element_text(size = rel(1.8)),

legend.position = "none",

axis.title.y = element_blank(),

axis.text.y = element_blank(),

axis.ticks.y = element_blank(),

axis.line.y = element_blank()

) +

xlab("New label") +

annotate("text", x = 20, y = 0.05, label = "Some annotation", size = 10)

grid.arrange(plot_H0, plot_H0, plot_H0, ncol = 1, nrow = 3)

`ggplot`

`grid.arrange`

Recommended for you: Get network issues from **WhatsUp Gold**. **Not end users.**

Answer Source

You forgot to replace the plot object.

```
library(ggplot2)
library(gridExtra)
popu_H0 <- seq(10, 30, length=100)
popu_H0_norm <- dnorm(popu_H0, mean = 20, sd = 4)
popu_H0_df <- as.data.frame(cbind(popu_H0, popu_H0_norm))
plot_H0 <- ggplot(popu_H0_df, aes(x=popu_H0, y=popu_H0_norm))
plot_H0 <- plot_H0 + # Here you need `<-` to update the plot
geom_line() +
theme(
text = element_text(size=20),
axis.title.x = element_text(vjust=0.1),
axis.text.x = element_text(size = rel(1.8)),
legend.position = "none",
axis.title.y = element_blank(),
axis.text.y = element_blank(),
axis.ticks.y = element_blank(),
axis.line.y = element_blank()
) +
xlab("New label") +
annotate("text", x = 20, y = 0.05, label = "Some annotation", size = 10)
grid.arrange(plot_H0, plot_H0, plot_H0, ncol = 1, nrow = 3)
```

Recommended from our users: **Dynamic Network Monitoring from WhatsUp Gold from IPSwitch**. ** Free Download**