2015-05-06 13 views
5

diese einfache ggplot Bedenken Sie:Wie kann ich die Leinwandgröße in ggplot steuern?

enter image description here

ich auf sie einen schwarzen Rand zog, so ist es einfacher, sich vorzustellen, wie groß es ist.

Ich verstehe nicht, warum diese Handlung so groß ist. Es gibt nichts in meinem Code, das ggplot sagt, dass ich irgendeinen Bereich über oder unter der Handlung haben möchte.

Dies scheint mich jedes Mal zu bekommen. Wie kann ich die Leinwandgröße in ggplot steuern?

library(ggplot2) 

hex=c("#CC0000", "#90BD31", "#178CCB")  

q <- ggplot(data=NULL) 
    q <- q + geom_rect(data=NULL, aes(xmin=0, xmax=1, ymin=0.5, ymax=1.5), fill=hex[1]) 
    q <- q + geom_rect(data=NULL, aes(xmin=1.5, xmax=2.5, ymin=0.5, ymax=1.5), fill=hex[2]) 
    q <- q + geom_rect(data=NULL, aes(xmin=3, xmax=4, ymin=0.5, ymax=1.5), fill=hex[3]) 
    q <- q + annotate("text", x=.5, y=0.1, label='Impaired', size=4) 
    q <- q + annotate("text", x=2, y=0.1, label='Normal', size=4) 
    q <- q + annotate("text", x=3.5, y=0.1, label='Optimal', size=4) 
    q <- q + coord_fixed() 
    q <- q + theme_classic() 
    q <- q + theme(axis.line=element_blank(), 
        axis.text.x=element_blank(), 
        axis.text.y=element_blank(), 
        axis.ticks=element_blank(), 
        axis.title.x=element_blank(), 
        axis.title.y=element_blank(), 
        panel.background=element_blank(), 
        panel.border=element_blank(), 
        panel.grid.major=element_blank(), 
        panel.grid.minor=element_blank(), 
        plot.background=element_blank()) 
    q 
+0

Ich habe immer gefunden, dass der Schlüssel konsistent Leinwand und alle anderen Dimensionen zu bekommen ist die grafische Ausgabe zu steuern Gerät direkt. Öffnen Sie einen mit png(), pdf() oder einem anderen Favoriten und legen Sie die Abmessungen in Pixeln, cm oder Zoll für die Ausgabe fest, die Ihren Anforderungen entspricht. Jede weitere Hilfe würde ein vollständig reproduzierbares Beispiel mit Daten benötigen, die Sie oben nicht angegeben haben (hex fehlt). –

+0

Entschuldigung wegen des fehlenden 'hex' ... Ich werde es hinzufügen. Ich stimme dir zu. Was ich nicht erwähnt habe, ist, dass dieser ggplot in einer Shiny App verwendet wird. Daher kann ich das Grafik-Ausgabegerät nicht in einer vernünftigen Weise steuern, wie Sie es vorgeschlagen haben. PS neben dem "Hex" sollte alles reproduzierbar sein. –

+0

Sowohl 'shiny :: plotOutput' als auch' shiny :: renderPlot' nehmen Argumente für Höhe und Breite an ... – Gregor

Antwort

5

Mit den ggplot2 plot.margin and/or panel.margin theme options sollten Sie in der Lage sein, die internen Margen zu kontrollieren, sobald Sie angemessen auf die Ausgabeabmessungen der Leinwand festgelegt haben. Dies wird sicherlich für eine normale Grafikgeräten arbeiten und sollte auch innerhalb der glänzenden Anwendung arbeiten:

library(ggplot2) 
library(grid) 

hex=c("#CC0000", "#90BD31", "#178CCB")  

q <- ggplot(data=NULL) 
    q <- q + geom_rect(data=NULL, aes(xmin=0, xmax=1, ymin=0.5, ymax=1.5), fill=hex[1]) 
    q <- q + geom_rect(data=NULL, aes(xmin=1.5, xmax=2.5, ymin=0.5, ymax=1.5), fill=hex[2]) 
    q <- q + geom_rect(data=NULL, aes(xmin=3, xmax=4, ymin=0.5, ymax=1.5), fill=hex[3]) 
    q <- q + annotate("text", x=.5, y=0.1, label='Impaired', size=4) 
    q <- q + annotate("text", x=2, y=0.1, label='Normal', size=4) 
    q <- q + annotate("text", x=3.5, y=0.1, label='Optimal', size=4) 
    q <- q + coord_fixed() 
    q <- q + theme_classic() 
    q <- q + theme(axis.line=element_blank(), 
        axis.text.x=element_blank(), 
        axis.text.y=element_blank(), 
        axis.ticks=element_blank(), 
        axis.title.x=element_blank(), 
        axis.title.y=element_blank(), 
        panel.background=element_blank(), 
        panel.border=element_blank(), 
        panel.grid.major=element_blank(), 
        panel.grid.minor=element_blank(), 
        plot.background=element_blank(), 
        plot.margin=unit(c(0,0,0,0), "cm"), 
        panel.margin=unit(c(0,0,0,0), "cm")) 
    q 

No margin output

Verwandte Themen