ggplot title sur deux ligne avec différentes couleurs

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

alex hassan
Messages : 81
Enregistré le : 02 Oct 2012, 11:25

ggplot title sur deux ligne avec différentes couleurs

Messagepar alex hassan » 22 Nov 2013, 09:59

Bonjour,

j'ai plusieurs information à mettre sur mes graphe (j'utilise ggplot2), je veux mettre le title sur
deux lignes avec différentes couleurs, mettre le title sur deux ligne j'arrive à faire ça:

Code : Tout sélectionner

ggplot(.............) +
labs(title = paste("Moyenne = ", round(Moyenne.TIME,4)
                        , "\n",
                        "Quantile.25 = ", Quantile.P25)
           , aspect.ratio = 1)   
    +
     
      theme(axis.title.x = element_text(colour = "red"),
            axis.title.y = element_text(colour = "blue"),
            title = element_text(colour = "blue", size=12))


mais mettre la deuxième ligne en différente couleur j'arrive pas, pourtant j'ai pas mal cherché dans la doc de ggplot2 et sur internet ??

Merci d'avance

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 24 Nov 2013, 19:42

Je ne pratique pas ggplot2 mais je vous donne une solution avec les packages grid et lattice qui devrait être adaptable à ggplot2 car lattice et ggplot2 sont basés sur le modèle graphique du package grid

Code : Tout sélectionner

x <- 1:10
y <- runif(10)
library(lattice)
library(grid)
xu <- unit(0.5, "npc")
yu <- unit(.2, "npc")
main <- textGrob(c("Moyenne", "\n\nVariance"),
                 x = rep(xu, 2),
                 y = rep(yu, 2),
                 just = rep("centre", 2),
                 gp = gpar(col = c("red", "green")))

xyplot(y ~ x, main = main)
Renaud

alex hassan
Messages : 81
Enregistré le : 02 Oct 2012, 11:25

Messagepar alex hassan » 25 Nov 2013, 08:14

Merci pour la réponse,

j'arrive à faire ça avec la fonction plot,

Code : Tout sélectionner

mtext(text=paste("Lower Limit = ", round(Lower.Limit,2), "\t",
                   "Upper.Limit = ", round(Upper.Limit, 2)), line=1, col="blue", cex=.8)
  mtext(text=paste("Minimum.ST.DATE = ",Minimum.DATE ,"\t",
                   "Maximum = ", Maximum.DATE), line=2, col="green", cex = .8)


mais avec le package ggplot2 c'est plus compliqué

Cdlt

Alex

dicko ahmadou
Messages : 444
Enregistré le : 21 Nov 2009, 20:15

Messagepar dicko ahmadou » 25 Nov 2013, 08:22

Bonjour,

Renaud à raison, en utilisant un peu de la magie du package grid (sur lequel lattice et ggplot2 sont basés) ça marche.
Donc je vais me baser sur son code directement.

Code : Tout sélectionner

require(ggplot2)
require(gridExtra)

### Dummy data
set.seed(1)
df <- data.frame(x = rnorm(10000, mean = 5))
title <- sprintf("Moyenne = %s \n Quantile.25 = %s",
                 round(mean(df$x), 3), round(quantile(df$x, 0.25), 3))

### Title grob
xu <- unit(0.5, "npc")
yu <- unit(.2, "npc")
main <- textGrob(c("Moyenne", "\n\nVariance"),
                 x = rep(xu, 2),
                 y = rep(yu, 2),
                 just = rep("centre", 2),
                 gp = gpar(col = c("red", "green")))


p <- ggplot(df, aes(x = x)) +
     geom_histogram(fill = "steelblue", colour = "black")

p <- arrangeGrob(p, main = main)
print(p)


La clé c'est la fonction arraneGrob.
The best thing about being a statistician is that you get to play in everyone's backyard.
John Tukey


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité