2013-03-18 3 views
12

Ich verwende geom_segment, um eine Zeitleiste der Aktivität zu zeichnen. Es ist alles auf der gleichen Linie, und da ich es zusammen mit anderen Graphen präsentieren möchte, würde ich lieber die y-Achse viel kleiner machen. Es scheint, dass die Größe des grauen Diagrammbereichs in ggplot2 immer quadratisch ist, egal ob ich ihn größer oder kleiner skaliere. Gibt es eine Möglichkeit zu sagen, dass ich x = 500 y = 50 oder so etwas möchte?Können Sie die Proportionen des ggplot2 Graphen von Quadrat zu Rechteck ändern?

df2 <- structure(list(Activities = 
         structure(c(2L, 1L, 2L, 1L, 2L, 3L, 1L, 2L, 2L, 2L, 2L, 5L, 
            4L, 3L, 2L, 2L), 
           .Label = c("authoring", "hacking", "learning", 
              "surfing", "tasks"), 
           class = "factor"), 
         Start = c(14895L, 15005L, 16066L, 16226L, 16387L, 16394L, 
           27030L,27532L, 27600L, 27687L, 28660L, 28713L, 
           29154L, 30264L, 30345L, 32245L), 
         End = c(15005L, 16066L, 16226L, 16387L,16394L, 16509L, 
           27491L, 27591L, 27628L, 28450L, 28704L, 29109L, 
           30250L, 30345L, 31235L, 33794L)), 
       .Names = c("Activities", "Start", "End"), 
       class = "data.frame", row.names = c(NA, -16L)) 
a <- 0:23 

Hier mein Grundstück:

ggplot(df2, aes(colour=Activities)) + 
    geom_segment(aes(x=Start, xend=End, y=0, yend=0), size=10) + 
    scale_x_continuous(breaks=a * 60 * 60, labels=a) + 
    xlab("Time") + ylab("") + 
    scale_y_continuous(breaks=NULL, limits=c(-.1, .1)) 

Sample timeline chart

+7

Die Größe des Diagramms entspricht der Größe Ihres aktuellen Grafikgeräts. Ändern Sie das und Ihre Handlung wird automatisch angepasst. Wenn Sie die Größe beim Speichern auf Festplatte festlegen möchten, verwenden Sie 'ggsave()' und legen Sie die Argumente für die Plotgröße fest. – Andrie

+1

@Andrie: Machen Sie das eine Antwort? – Roland

+1

@Andrie Sie können auch 'coord_fixed' verwenden, um das Verhältnis zwischen der X- und Y-Achse zu fixieren, siehe meine Antwort. Ich habe tatsächlich diese Form eine Antwort, die Sie haben eine Zeit zurück :). –

Antwort

16

das Verhältnis auf der x- und y-Achse bis zu einem gewissen Wert zu beheben (zB 1 oder 0,2), können Sie coord_fixed() verwenden:

g + coord_fixed(ratio = 0.2) 

wo g ist Ihre ursprüngliche Handlung. Du musst ein bisschen herumspielen, um zu bekommen, was du brauchst. Wie @Andrie sagte, können Sie auch die Leinwandgröße, z. ggsave mit:

print(g) 
ggsave("/tmp/plt.png", width = 16, height = 9, dpi = 120) 

Ich würde beide ausprobieren, oder vielleicht sie kombinieren. Siehe auch this earlier post.

+0

Nur so ist es klar, hier Verhältnis ist y/x. Zur Referenz - http://ggplot2.tidyverse.org/reference/coord_fixed.html – TrigonaMinima

Verwandte Themen