2016-11-03 10 views
0

ich derzeit Plots bin entfernen mit ggplot2 für ein Latex-Dokument und entdeckt zu schaffen, dass ggplot2 viele unerwünschte Ränder ergänzt:Wie Margen in ggplot2 Chart

enter image description here

  • rot gemalt von plot.background=element_rect(fill="red"):
    • kleiner Rand links
    • kleiner Rand zwischen Bild und Legende
  • gemalt violett mit photoshop:
    • Rand auf der linken und der rechten Seite
    • 1px Marge am unteren

Welche Regeln mehr benötigt werden, um diese Ränder zu entfernen ? Es ist wirklich schwierig, all diese Konfigurationsoptionen zu googeln. Dies ist meine aktuelle Chart:

library(ggplot2) 
library(scales) 
label <- c("A", "B", "C", "D") 
value <- c(61, 26, 9, 4) 
values <- data.frame(label, value) 
myplot <- ggplot(values, aes(x = "", y=value, fill=label)) 
myplot <- myplot + theme(legend.position="bottom") 
myplot <- myplot + labs(fill="") 
myplot <- myplot + geom_bar(stat="identity", width=1) 
myplot <- myplot + geom_text(
    aes(x=1.3, y=value/2+c(0, cumsum(value)[-length(value)])), 
    label=percent(value/100), 
    size=2 
) 
myplot <- myplot + coord_polar(theta="y") 
myplot <- myplot + theme(plot.background=element_rect(fill="red")) 
myplot <- myplot + theme(
    plot.margin=unit(c(0,0,0,0), "mm"), 
    legend.margin=unit(0, "mm"), 
    axis.title=element_blank(), 
    axis.ticks=element_blank() 
) 
ggsave("pie.pdf") 
+0

Dupe? [Plot-Ränder entfernen in 'ggplot2'] (http://stackoverflow.com/a/17791455/903061) sagt' labs (x = NULL, y = NULL) 'wird auch benötigt. – Gregor

+0

Allerdings scheint es nicht wirklich zu helfen, zumindest nicht mit dem roten Bereich. – Gregor

+0

Warum entfernen Sie nicht einfach '' myplot <- myplot + theme (plot.background = element_rect (fill = "red")) ''? –

Antwort

1

Sie können den Rest des Achsenraums über die Designelemente axis.text und axis.tick.length entfernen.

So würden Sie so etwas wie das folgende in der theme Code hinzu:

axis.text = element_blank(), axis.ticks.length = unit(0, "mm") 

In der aktuellen Entwicklungsversion von ggplot2, ggplot2_2.1.0.9001, gibt es ein neues Thema Element legend.box.spacing das könnte auch hier nützlich, um den gesamten Abstand zwischen der Legende und dem Plot zu entfernen: legend.box.spacing = unit(0, "mm").

+0

'axis.text' und' axis.ticks.length' lösten das Problem –

0

Passen Sie die plot.margin Einstellungen so, dass die untere und linke Seite sind negative Zahlen.

plot.margin=unit(c(0,0,-12,-5), "mm")

Wenn Sie den Rand auf der Unterseite loszuwerden tun, Sie opfern auch die Legende.

+0

Das Problem mit diesen hartcodierten Werten ist, dass Sie sie für jeden neuen Diagrammtyp neu berechnen müssen. Wenn Sie die richtigen Margen- und Längenoptionen kennen, passen sie für jedes zukünftige Diagramm, das Sie erstellen. –