2013-07-01 2 views
17

Ho iniziato a integrare l'utilizzo di R in Notebook per ottenere, dal mio punto di vista, il meglio di entrambi i mondi (gestione dei dati in python sfruttando i vantaggi analitici/grafici comparativi di R). Sfortunatamente sono appeso a un elemento apparentemente semplice, regolando le dimensioni del tracciato per la grafica di ggplot2. La regolazione delle dimensioni della trama è piuttosto semplice con i panda, e in un ambiente puramente R (come RStudio), posso regolare i grafici con dev.new() o PNG(), ecc. Tuttavia, provando a farlo, Notebook fa impazzire il mio computer (Sto usando Ubuntu 13.04 su un ASUS U46E). Inoltre, questo è fondamentale, voglio mantenere la grafica in linea in modo da poter passare lo script nella sua interezza ai miei colleghi.Dimensioni di stampa - Utilizzo di ggplot2 in Notebook IPython (via rmagic)

Quando si prova dev.new(), il mio computer è bloccato e ho dovuto passare a un terminale virtuale diverso per riavviare. Ho provato a regolare le opzioni x11(), il mio browser è diventato temporaneamente insensibile mentre la grafica è andata un po 'in tilt. Alla fine, mi è stato concesso il controllo di nuovo, ma non ho idea del perché sia ​​successo.

Qualcuno sa perché questo potrebbe essersi verificato? Inoltre, qualcuno sa come regolare la dimensione del grafico degli oggetti ggplot2 sottoposti a rendering da IPython Notebook? Temo di non poter condividere i dati, ma posso dirvi che stavo tentando di tracciare tre variabili numeriche sfaccettate dal centro del fondo (una variabile categoriale). Questi grafici sono stati eseguiti come scritti ... fino a quando non ho provato ad aggiustare le dimensioni. Ecco il mio codice di esempio:

%%R 
#x11(width=500,height=300) << didn't work 
#dev.new() << tried before setting size parameters, and it locked up my laptop 
#Plot total expenses by unit 
print('*****Expenses by Unit*****') 
print(smu) 
print(ggplot(smu,aes(x=fy,y=as.numeric(as.character(totexp)),group=fund,colour=fund))+geom_line(size=2)+ 
     ggtitle('Total Expenses')) 
#Plot expense components 
print(ggplot(smu,aes(fy))+ 
     geom_line(aes(y=as.numeric(as.character(fixed)),colour='fixed',group=fund,colour=fund))+ 
     geom_line(aes(y=as.numeric(as.character(var)),colour='variable',group=fund,colour=fund))+ 
     geom_bar(aes(y=as.numeric(as.character(incadj)),group=1),stat='identity')+ 
     facet_grid(.~fund)+ 
     ggtitle('Components of Expenditure')) 

risposta

26

Il comando rmagic ha argomenti facoltativi per specificare la dimensione del grafico. L'impostazione predefinita è una larghezza e un'altezza di 480 pixel. Così, il codice qui sotto riproduce le impostazioni predefinite:

%%R -w 480 -h 480 -u px 
library(ggplot2) 
dat <- data.frame(x = rnorm(10), y = rnorm(10), 
        lab = sample(c('A', 'B'), 10, replace = TRUE)) 
x <- ggplot(dat, aes(x = x, y = y, color = lab)) + geom_point() 
print(x) 

E questo codice di seguito crea una trama con una larghezza di 50 cm e un'altezza di 25 cm:

%%R -w 50 -h 25 -u cm 
library(ggplot2) 
dat <- data.frame(x = rnorm(10), y = rnorm(10), 
        lab = sample(c('A', 'B'), 10, replace = TRUE)) 
x <- ggplot(dat, aes(x = x, y = y, color = lab)) + geom_point() 
print(x) 

è anche possibile specificare le dimensioni in pollici o millimetri.

+0

Molto apprezzato John! Funziona bene, sebbene non sia stato possibile specificare le unità senza un'eccezione. Ciononostante, la modifica della distanza dei pixel ha sicuramente portato a termine il lavoro. –