2010-03-30 12 views
25

которые я хотел бы, чтобы породить несколько графических окон из функции в R с использованием ggplot графики ...Генерация нескольких графических из внутри функции R

testf <- function(a, b) { 
    devAskNewPage(TRUE) 
    qplot(a, b); 
    # grid.newpage(recording = TRUE) 
    dev.new() 
    qplot(a, a+a); 
    # grid.newpage(recording = TRUE) 
    dev.new() 
    qplot(b, b+b); 
} 

library(ggplot2) 

x <- rnorm(50) 
y <- rnorm(50) 
testf(x, y) 

Однако ни dev.new(), ни сетка. Кажется, что новая страница(), закрашивает предыдущий график.

Я знаю, что в R функции обычно производят только последнее, что они оценивают, но я хотел бы лучше понять процесс и узнать о возможных возможных обходных решениях.

Мысли?

+1

Возможно R FAQ 7.22 http://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-do-lattice_002ftrellis-graphics-not-work_003f – rcs

+0

@rcs Ваш комментарий отвечает на вопрос. Напишите это как ответ, чтобы его можно было принять. –

+0

комментарий rcs предполагает, что кто-то не читает FAQ;) – Marek

ответ

24

сетка основанные на графике функции в решетке и ggplot2 создают объект графика, но не отображают его. Метод print() для объекта графа производит фактический дисплей, т.е.

print(qplot(x, y)) 

решает эту проблему.

См. R FAQ 7.22.

+1

Ваши советы верны, но это не имеет ничего общего с сеткой - это просто решение в стиле программирования. – hadley

+4

+1: Мне это стоило 30 минут. Эта информация важна, поэтому стоит воспроизвести: *** «Для создания фактического отображения требуется метод print() для объекта графика. Когда вы используете (ggplot2, grid и т. Д.), Интерактивно работает в командной строке, результат автоматически печатается, но в источнике() или внутри ваших собственных функций вам понадобится явный оператор print(). *** – smci

+0

http://cran.r-project.org/doc/FAQ/R-FAQ. HTML # Почему-Do-lattice_002ftrellis-графика-не-work_003f – marbel

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

  • Нет связанных вопросов^_^