основной заголовок в grid.arrange или аранжировкеGrob имеет серый фон

Я перехожу с ggplot2 1.0.1 и gridExtra 0.9.1 на новейшие версии этих пакетов и на данный момент борюсь с некоторыми незначительными проблемами.

Одна проблема - название в комбинированном сюжете.

library(ggplot2)
library(gridExtra)
df <- data.frame(x=runif(100), y=runif(100))
p1 <- ggplot(df, aes(x,y)) + geom_point()
p2 <- ggplot(df, aes(x,y)) + geom_point()
a <- arrangeGrob(p1,p1,p2, layout_matrix=rbind(c(1,2),c(1,3)), top='my title')
plot(a)
ggsave('a.pdf', a)

в старой версии параметр назывался main и мне приходилось использовать print для построения графика a. Теперь, когда я сохраняю график, все в порядке. Но график plot(a) имеет светло-серый фон сетки позади my title. В сохраненном pdf файле фон снова белый.

Я также пытался использовать grid.arrange, но я не хочу печатать сюжет непосредственно при выполнении. Вот почему я использую двухэтапный подход, сохраняя график в переменной, а затем plot его.

Итак, как мне получить белый фон, когда plot(a)?


person drmariod    schedule 04.01.2016    source источник


Ответы (1)


Используйте 1_. Метод plot предназначен только для тестирования.

library(grid)
grid.newpage() 
grid.draw(a)

результат

person Roland    schedule 04.01.2016
comment
хач, это не очень интуитивно понятно... Но ладно, так оно и работает. grid.newpage рекомендуется? Или когда мне это нужно?! Мне нравилась старая возможность с использованием print, к сожалению, это больше невозможно. - person drmariod; 04.01.2016
comment
Я согласен, что plot более интуитивно понятен. Я узнал об использовании grid.draw от baptiste, когда ошибочно рекомендовал plot вместо print после обновления. Вам нужно grid.newpage, если вы хотите новую страницу. В противном случае это может быть напечатано поверх существующей сетки. - person Roland; 04.01.2016
comment
Кстати, я не несу ответственности за этот выбор: grid.draw - это стандартное соглашение сетки, а plot и print когда-то были унаследованы от решетки/ggplot2, но разработчики gtable решили изменить это. - person baptiste; 04.01.2016
comment
Спасибо за упоминание grid.newpage(). В моем случае это было необходимо для удаления старых заголовков. Заголовки пересекались. - person Phlogi; 22.02.2021