2016-11-30 2 views
0

Я пытаюсь собрать три сюжета друг на друга, используя пакет gridExtra. Я попробовал первый пример, который использует grid.arrange от here, который работает абсолютно нормально.Любопытное поведение с использованием gridExtra (ggplot)

Однако, когда я пытаюсь использовать свои собственные сюжеты, я получаю осями для каждого сюжета, но нет данных, при этом все форматирование лишены. Минимальный рабочий пример:

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 производит this.

ответ

1

Вы забыли заменить объект сюжета.

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) 
+0

Спасибо за ответ. Однако я что-то упускаю? Код, который вы разместили, похож на мой, за исключением того, что у вас (правильно) добавлены вызовы библиотеки вверху. Возможно, ключ в «вы забыли заменить объект сюжета», но я не знаю, что это значит! Если вы имеете в виду тот факт, что я использовал один и тот же сюжет 3 раза, я могу подтвердить, что поведение абсолютно одинаково с тремя разными сюжетными объектами. Я только разместил его таким образом, чтобы сделать пример простым и воспроизводимым. – suknat

+0

У меня есть 'plot_H0 <-' в 7-й строке. Я добавляю там комментарий. –

+0

Блестящий и спасибо! Извините, я этого не заметил! – suknat

Смежные вопросы