web-dev-qa-db-fra.com

Pouvez-vous changer les proportions du graphique ggplot2 du carré au rectangle?

J'utilise geom_segment pour tracer une chronologie de l'activité. Tout est sur la même ligne, et comme je veux le présenter avec d'autres graphiques, je préfère de loin réduire l'axe y. Il semble que la taille de la zone de graphique grise dans ggplot2 soit toujours carrée, que je l'agrandisse plus ou moins. Existe-t-il un moyen de dire que je veux x = 500 y = 50 ou quelque chose comme ça?

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

Voici mon intrigue:

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

15
Stian Håklev

Pour fixer le rapport sur les axes x et y à une certaine valeur (par exemple 1 ou 0,2), vous pouvez utiliser coord_fixed():

g + coord_fixed(ratio = 0.2)

g est votre tracé d'origine. Vous devez jouer un peu pour obtenir ce dont vous avez besoin. De plus, comme @Andrie l'a dit, vous pouvez également fixer la taille du canevas, par exemple en utilisant ggsave:

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

Je voudrais essayer les deux, ou peut-être les combiner. Voir aussi cet article précédent .

26
Paul Hiemstra