Problème avec légendes en colonnes

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

Flora Grappelli
Messages : 30
Enregistré le : 25 Mar 2014, 15:22

Problème avec légendes en colonnes

Messagepar Flora Grappelli » 09 Déc 2016, 11:24

Bonjour tout le monde,

J'aimerais créer des légendes sur 3 colonnes.
Mais en exportant mon graphique, les légendes se chevauchent. Et ce peu importe le format d'exportation choisi.
J'ai changé la taille de mes légendes, la taille des points, le nombre de colonnes... Rien n'y fait.

Code : Tout sélectionner

beta <- seq (0, 3 , 0.2)
 y = seq(0,15,1)

# Graphique
par(mar=c(25,4, 4, 1) + 0.1, xpd=NA) # creer marge bas, gauche, haut, droite defaut c(5, 4, 4, 1) + 0.1
plot (beta,y)
# Legende
legend ( x=0, y =-25, pch = c(22, 23,24,25,21,22, 23,24,25,21,22, 23,24,25,21,22, 23,24),  lty = c( 1,1,1,1, 1, 1,1,1 ,1,1, 1,1,1,1,1,1,1,1),  pt.bg = c ("#C71585","#25FDE9","#FFEFD5","#3A9D23", "#ED0000", "#791CF8" ,"#130E0A","#01D758","#0000FF", "#BABABA","#EDFF0C", "#CC5500", "#947F60",  "#B666D2", "#1D4851", "#6E0B14", "#D58490","#9683EC" ), c ( 'CH score', 'glPO', 'glPH','Adapted logrank', 'Improved logrank', expression('WLR SZZ'*rho*'=0' *gamma*'=0'),  expression('WLR SZZ'*rho*'=0' *gamma*'=1'),expression('WLR SZZ'*rho*'=1' *gamma*'=0'),  expression('WLR SZZ'*rho*'=1' *gamma*'=1'),expression('WLR OG'*rho*'=0' *gamma*'=1'),  expression('WLR OG'*rho*'=1' *gamma*'=1'), 'FH score', expression('HWLR '*rho*'=0' *gamma*'=0'),expression('HWLR '*rho*'=0' *gamma*'=1'),expression('HWLR '*rho*'=1' *gamma*'=0'),expression('HWLR '*rho*'=1' *gamma*'=1'),'plAH',  'Midpoint imputation'),ncol = 3, pt.cex = 2.5,  cex=2, xpd=NA)


PS : Ici , le graphique ne sert à rien, j'aimerais récupérer mes légendes seules pour les placer dans un texte. Je rognerai l'image après exportation en ne gardant que les légendes.

Merci pour toute votre aide ! ça fait des heures que je suis sur le problème...

Flora Grappelli
Messages : 30
Enregistré le : 25 Mar 2014, 15:22

Re: Problème avec légendes en colonnes

Messagepar Flora Grappelli » 09 Déc 2016, 11:33

J'ai eu une (mauvaise) idée : faire une capture d'écran de mon graphique R !
Sachant que sur la fenêtre d'affichage de R, il n'y a pas de chevauchement...

Florent Aubry
Messages : 324
Enregistré le : 25 Juin 2010, 10:21

Re: Problème avec légendes en colonnes

Messagepar Florent Aubry » 09 Déc 2016, 13:33

Une piste : pt.cex (taille des points) et cex (taille des caractères) sont très grands. La configuration pt.cex=1 et cex=0.7 devrait améliorer les choses. Si ce n'est pas suffisant, réduire pt.cex (mais pas trop) par contre il est plus difficile de réduire cex si on veut que la légende soit lisible. A ce moment, il faut peut-être refaire le graphique en l'étendant sur l'écran en entier ; la procédure peut être du type
1) tracé du graphique
2) cliquez sur l'icône 'étendre' de la fenêtre du graphique
3) tracer de nouveau le graphique avec plot
4) ajouter la légende.

Il est aussi possible de créer une fenêtre avec les dimensions voulues par :

Code : Tout sélectionner

dev.new( width=..., height=...)

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: Problème avec légendes en colonnes

Messagepar Logez Maxime » 09 Déc 2016, 13:38

Bonjour,

Bon une possibilité séparer la fenêtre graphique en plusieurs colonnes de tailles différentes : 1 pour le graph et 1 pour chaque légende. A toi de jouer sur la largeur de la fenêtre graphique et de chacune des colonnes :

Code : Tout sélectionner

# séparation de la fenêtre graphique en 4 colonnes de tailles différentes
[code]layout(matrix(1:4, ncol = 4), width = c(0.8, 0.2/3, 0.2/3, 0.2/3))
# le graph
plot(rnorm(1000), rnorm(1000))
# on change les marges des autres colonnes, à ajuster
par(mar= c(5.1,0,4.1,0))
# un graph à "blanc" suivi de la légende, le tout dans la 2ème colonne
plot(0,0,type = "n", axes = F, ann =FALSE, bty = "n")
legend("top", legend = "1")
# un autre graph pour la 3ème colonne
plot(0,0,type = "n", axes = F, ann =FALSE, bty = "n")
legend("center", legend = "2")
# graph, 4ème colonne
plot(0,0,type = "n", axes = F, ann =FALSE, bty = "n")
legend("bottom", legend = "3")
Cordialement,
Maxime

Flora Grappelli
Messages : 30
Enregistré le : 25 Mar 2014, 15:22

Re: Problème avec légendes en colonnes

Messagepar Flora Grappelli » 09 Déc 2016, 14:32

Merci beaucoup Florent et Maxime !

J'essaye vos deux solutions ce week-end et je vous tiens au courant.
Merci encore et bon après-midi

Flora Grappelli
Messages : 30
Enregistré le : 25 Mar 2014, 15:22

Re: Problème avec légendes en colonnes

Messagepar Flora Grappelli » 13 Déc 2016, 16:56

Bonjour,
Florent :
J'ai tenté de réduire les tailles de pt.cex et de cex mais ça ne fonctionnait pas.
En étendant la fenêtre, soit en suivant la procédure décrite, ça a bien marché.
Je retiens cette technique pour éviter un écrasement lors de l'exportation.
Maxime :
J'ai suivi la procédure en divisant la fenêtre par le nombre de légendes voulues avec 'layout'.
J'ai mis mes légendes les unes à la suite des autres en ligne.
Et ça a parfaitement fonctionné !

Merci encore à tous les deux et bonne soirée !

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: Problème avec légendes en colonnes

Messagepar Mickael Canouil » 13 Déc 2016, 18:41

Bonjour,

je vous propose une version en ggplot2 pour l'exemple:

Code : Tout sélectionner

dta <- data.frame(
    beta = seq (0, 3.4, 0.2),
    y = seq(0, 17, 1),
    pch = c(22,23,24,25,21,22, 23,24,25,21,22,23,24,25,21,22,23,24),
    pt.bg = c("#C71585","#25FDE9","#FFEFD5","#3A9D23", "#ED0000", "#791CF8" ,"#130E0A","#01D758","#0000FF", "#BABABA","#EDFF0C", "#CC5500", "#947F60",  "#B666D2", "#1D4851", "#6E0B14", "#D58490","#9683EC")
)
plot.labels <- c(
    'CH score',
    'glPO',
    'glPH',
    'Adapted logrank',
    'Improved logrank',
    expression('WLR SZZ'*rho*'=0' *gamma*'=0'),
    expression('WLR SZZ'*rho*'=0' *gamma*'=1'),
    expression('WLR SZZ'*rho*'=1' *gamma*'=0'),
    expression('WLR SZZ'*rho*'=1' *gamma*'=1'),
    expression('WLR OG'*rho*'=0' *gamma*'=1'),
    expression('WLR OG'*rho*'=1' *gamma*'=1'),
    'FH score',
    expression('HWLR '*rho*'=0' *gamma*'=0'),
    expression('HWLR '*rho*'=0' *gamma*'=1'),
    expression('HWLR '*rho*'=1' *gamma*'=0'),
    expression('HWLR '*rho*'=1' *gamma*'=1'),
    'plAH',  'Midpoint imputation'
)

ggplot(data = dta, aes(x = beta, y = y, shape = factor(paste(pch, pt.bg)), fill = factor(paste(pch, pt.bg)))) + geom_point(size = 3) +
    scale_shape_manual(name = NULL, values = dta[, "pch"], labels = plot.labels, guide = guide_legend(ncol = 3)) +
    scale_fill_manual(name = NULL, values = dta[, "pt.bg"], labels = plot.labels, guide = guide_legend(ncol = 3)) +
    theme(legend.position = "bottom")
Mickaël
mickael.canouil.fr | rlille.fr

Stéphane Adamowicz
Messages : 206
Enregistré le : 07 Mar 2012, 10:13
Contact :

Re: Problème avec légendes en colonnes

Messagepar Stéphane Adamowicz » 14 Déc 2016, 13:21

Bonjour,

Je ne vois pas où est le problème. Le code marche très bien avec cex=1 , et même en supprimant le paramètre pt.ce, comme ci-dessous :

Code : Tout sélectionner

legend ( x=0, y =-25, pch = c(22, 23,24,25,21,22, 23,24,25,21,22, 23,24,25,21,22, 23,24),  lty = c( 1,1,1,1, 1, 1,1,1 ,1,1, 1,1,1,1,1,1,1,1),  pt.bg = c ("#C71585","#25FDE9","#FFEFD5","#3A9D23", "#ED0000", "#791CF8" ,"#130E0A","#01D758","#0000FF", "#BABABA","#EDFF0C", "#CC5500", "#947F60",  "#B666D2", "#1D4851", "#6E0B14", "#D58490","#9683EC" ), c ( 'CH score', 'glPO', 'glPH','Adapted logrank', 'Improved logrank', expression('WLR SZZ'*rho*'=0' *gamma*'=0'),  expression('WLR SZZ'*rho*'=0' *gamma*'=1'),expression('WLR SZZ'*rho*'=1' *gamma*'=0'),  expression('WLR SZZ'*rho*'=1' *gamma*'=1'),expression('WLR OG'*rho*'=0' *gamma*'=1'),  expression('WLR OG'*rho*'=1' *gamma*'=1'), 'FH score', expression('HWLR '*rho*'=0' *gamma*'=0'),expression('HWLR '*rho*'=0' *gamma*'=1'),expression('HWLR '*rho*'=1' *gamma*'=0'),expression('HWLR '*rho*'=1' *gamma*'=1'),'plAH',  'Midpoint imputation'),ncol = 3,  cex=1, xpd=NA)
Stéphane Adamowicz
INRA, UR 1115 Plantes et Systèmes de Culture Horticoles (PSH)
domaine St Paul, site agroparc
84914 Avignon, cedex 9


Retourner vers « Questions en cours »

Qui est en ligne

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