2017-07-06 8 views
0

Ich speichere normalerweise die Plots von ggplot2 mit dem png Gerät. Die Breite und Höhe der Ausgabe wird durch die Argumente der Funktion festgelegt. Leere Zonen werden gezeichnet, wenn die "natürlichen Proportionen" des Diagramms nicht den Proportionen des Geräts entsprechen. Um dies zu vermeiden und die gesamte definierte Leinwand zu verwenden, müssen die Proportionen der Handlung bekannt sein. Gibt es eine Möglichkeit, diesen Wert ohne Versuch und Irrtum herauszufinden?Kenne Proportionen von ggplot2 plot

Dieser Code kann als Beispiel verwendet werden:

x <- seq(from = 0, to = 1, by = 0.1) 
y <- seq(from = 1, to = 2, by = 0.1) 
df <- expand.grid(x = x, y = y) 
df <- cbind(df, z = rnorm(ncol(df), 0, 1)) 

p <- ggplot(df, aes(x,y, fill = z)) + geom_raster() + coord_fixed() 

ppi <- 300 

#Value 0.4 is used to change inches into milimeters 
png("plot.png", width = 16*0.4*ppi, height = 20*0.4*ppi, res = ppi) 
print(p) 
dev.off() 

Es ist ersichtlich, dass einige Leerraum am oberen und am unteren Rand hinzugefügt wird, um die PNG-Datei zu füllen. Dies könnte leicht korrigiert werden, indem ein Anteil verwendet wird, der von 20/16 verschieden ist, was nicht optimal ist.

Antwort

0

Sie können ändern die ratio arg innen coord_fixed():

p <- ggplot(df, aes(x,y, fill = z)) + 
     geom_raster() + 
     coord_fixed(ratio = 20/16) 

Alteratively Sie die aspect.ratio innerhalb des theme() angeben:

p <- ggplot(df, aes(x,y, fill = z)) + 
     geom_raster() + 
     theme(aspect.ratio = 20/16) 

Das Ergebnis ist das gleiche:

enter image description here

+0

Ich meine, dass die "natürlichen Proportionen", wenn das Koordinatenverhältnis fest ist, die Größe der Titel, die Legende, den Streifen der Facetten usw. berücksichtigen sollten. Wenn ein Verhältnis von 1 in'koord_fixed' in diesem Diagramm festgelegt ist , und ein Verhältnis von 1 ist auch im Verhältnis von 'width' und 'height' festgelegt, es wird eine leere Zone in der png-Datei aufgrund der Achsenbeschriftungen, der Legende usw. geben. – Servadac