2013-07-01 3 views
17

Ich habe begonnen, die R - Nutzung in Notebook zu integrieren, um aus meiner Sicht das Beste aus beiden Welten zu erhalten (Datenmanagement in Python unter Ausnutzung der vergleichenden analytischen/grafischen Vorteile von R)). Leider bin ich auf ein scheinbar einfaches Element aufgelegt, indem ich die Plot-Größe für ggplot2-Grafiken anpasse. Die Anpassung der Plot-Größen ist mit Pandas ziemlich einfach, und in einer reinen R-Umgebung (wie RStudio) kann ich Plots mit dev.new() oder PNG() usw. anpassen. Jedoch macht es mein Notebook nervös (Ich benutze Ubuntu 13.04 auf einem ASUS U46E). Außerdem ist das wichtig, ich möchte die Grafik inline halten, damit ich das Skript vollständig an meine Kollegen weitergeben kann.Plotgröße - Mit ggplot2 in IPython Notebook (via rmagic)

Beim Versuch, dev.new(), meinen Computer gesperrt und ich musste zu einem anderen virtuellen Terminal um neu zu starten. Ich habe versucht, x11() Optionen anzupassen, mein Browser reagierte zeitweise nicht mehr, während die Grafik ein wenig drunter und drüber ging. Letztendlich bekam ich wieder die Kontrolle, aber ich habe keine Ahnung, warum das passiert ist.

Weiß jemand, warum dies geschehen sein könnte? Weiß jemand darüber hinaus, wie man die Plotgröße von ggplot2-Objekten, die in IPython Notebook gerendert wurden, anpasst? Ich fürchte, ich kann die Daten nicht teilen, aber ich kann Ihnen sagen, dass ich versucht habe, drei numerische Variablen darzustellen, die durch das Fund Center (eine kategoriale Variable) facettiert sind. Diese Plots wurden wie beschrieben ausgeführt ... bis ich versuchte, die Größe anzupassen. Hier ist mein Beispielcode:

%%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')) 

Antwort

26

Der Befehl rmagic verfügt über optionale Argumente, um die Größe des Diagramms anzugeben. Der Standardwert ist eine Breite und Höhe von 480 Pixel. Somit repliziert der Code unter den Standardeinstellungen:

%%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) 

Und dieser Code erstellt unten ein Grundstück mit einer Breite von 50 cm und einer Höhe von 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) 

Sie können auch die Größe angeben in Zoll oder Millimetern.

+0

Sehr geschätzt John! Dies funktioniert gut, obwohl ich keine Einheiten ohne Ausnahme angeben konnte. Nichtsdestotrotz wird die Arbeit mit der Änderung der Pixelentfernung definitiv erledigt. –