Utilisation de Pie()

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

Abdel Zine
Messages : 75
Enregistré le : 28 Nov 2006, 09:56

Utilisation de Pie()

Messagepar Abdel Zine » 09 Mai 2007, 16:35

Bonjour !
Je voudrais représenter le résultat de ce traitement :

Code : Tout sélectionner

> nbSteps <- 2000
> mySteps <- c(1544, 1999, 1999, 1115, 1633)
>
> mySteps < nbSteps - 1
[1]  TRUE FALSE FALSE  TRUE  TRUE
>
> mean(mySteps < nbSteps - 1)
[1] 0.6


sous forme graphique en utilisant la fonction pie(), celle-ci donne le résultat de synthèse "summary", moi je voudrais mettre en évidence le pourcentage des résultats < 1999 (60 %) sous forme de camembert,
exemple sur
http://www.hebergement-images.com/05/1178727193_Anad 1a.JPG (copier le lien souligné pour voir le graphique)

est ce possible avec Pie() ?
Merci
Nul ne peut atteindre l'aube sans passer par le chemin de la nuit. Khalil Gibran.

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

Messagepar Logez Maxime » 09 Mai 2007, 17:36

Bonjour,

Je pense que tout est dans l'aide de la fonction pie. Tu n'as qu'a tapé pie(c(0.6,0.4),labels="<1999",">1999") et tu auras ton camembert.

Maxime

Abdel Zine
Messages : 75
Enregistré le : 28 Nov 2006, 09:56

Messagepar Abdel Zine » 12 Mai 2007, 09:54

Bonjour !
Logez Maxime a écrit :Tu n'as qu'a tapé pie(c(0.6,0.4),labels="<1999",">1999")

Maxime, merci pour ton indication, j'ai essayé avec :

Code : Tout sélectionner

pie(c(mean(mySteps < nbSteps - 1) , mean(mySteps >= nbSteps - 1)) )
normalement c'est ce que je veux. Pour les labels il semble que la syntaxe ci-dessus soit incorrecte, je les obtiens avec :

Code : Tout sélectionner

pie(c(mean(mySteps < nbSteps - 1) , mean(mySteps >= nbSteps - 1) ),labels=c("conv", "non conv"), col = c("red", "blue"))

Tu me corriges si je me trompe stp, ou si il y a un moyen plus facile d'obtenir le même résultat.

J'aimerais également mettre le pourcentage des slices à coté des labels. Est-ce possible ? (le résultat n'est pas figé, ça pourrait être autre chose que 0.6, 0.4)

Merci beaucoup
Abdel
Nul ne peut atteindre l'aube sans passer par le chemin de la nuit. Khalil Gibran.

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

Messagepar Logez Maxime » 13 Mai 2007, 20:34

Bonjour,

normalement c'est ce que je veux. Pour les labels il semble que la syntaxe ci-dessus soit incorrecte, je les obtiens avec :
Code:
pie(c(mean(mySteps < nbSteps - 1) , mean(mySteps >= nbSteps - 1) ),labels=c("conv", "non conv"), col = c("red", "blue"))

Tu me corriges si je me trompe stp, ou si il y a un moyen plus facile d'obtenir le même résultat.


J'avais oublié de mettre le c() entre les noms de label. Mea culpa, tu dois bien taper un truc du genre labels=c("<1999",">19999") pour faire afficher les bons noms.

Pour répondre à ta question je te conseille ça :

Code : Tout sélectionner

mySteps <- c(1544, 1999, 1999, 1115, 1633)
nbSteps <- 2000
x <- c(mean(mySteps < nbSteps - 1) , mean(mySteps >= nbSteps - 1) )
label <- c(paste("conv =","\n",round(x[1]*100,1),"%",sep=""),paste("non conv =","\n",round(x[2]*100,1),"%",sep=""))
pie(x,labels=label,init.angle=90,col= c("red", "blue"))


J'espère que ça répondra à ta question.

Maxime

Abdel Zine
Messages : 75
Enregistré le : 28 Nov 2006, 09:56

Messagepar Abdel Zine » 14 Mai 2007, 17:21

oui maxime, c'est très enrichissant, je t'en remercie.

Abdel
Nul ne peut atteindre l'aube sans passer par le chemin de la nuit. Khalil Gibran.

Abdel Zine
Messages : 75
Enregistré le : 28 Nov 2006, 09:56

Messagepar Abdel Zine » 24 Juin 2007, 09:55

Bonjour,

Toujours concernant la fonction pie(), je ne comprends pas le rôle du paramètre edges=200 même en modifiant sa valeur
edges : the circular outline of the pie is approximated by a polygon with this many edges.
Quelqu'un pourrait-il m'éclairer svp ?

Aussi, en mettant le résultat de pie() dans un fichier image (.jpg ou autre)

Code : Tout sélectionner

savePlot(filename = "Rplot", type = "bmp", device = dev.cur(), restoreConsole = TRUE)
je voudrais que le "cadre" de l'image soit plus petit (il est par défaut de la taille de la fenêtre graphique 550x550 pix), j'arrive à rendre le pie plus petit en jouant sur le param radius, mais comment redimentionner le cadre pour qu'il soit plus petit ? est-ce possible avec une autre fonction où dois-je utilisant d'autres outils externes à R ?

Merci
Nul ne peut atteindre l'aube sans passer par le chemin de la nuit. Khalil Gibran.

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

Messagepar Logez Maxime » 25 Juin 2007, 07:38

Bonjour,

Le edges sert a tracer le bord extérieur du camembert à partir d'un polygone. Plus tu auras de polygone pour faire le bord et plus celui-ci sera "lisse".

Code : Tout sélectionner

#Avec l'exemple de la fonction :
pie.sales <- c(0.12, 0.3, 0.26, 0.16, 0.04, 0.12)
pie(pie.sales,col = c("purple", "violetred1", "green3", "cornsilk", "cyan", "white"),edges=1)
pie(pie.sales,col = c("purple", "violetred1", "green3", "cornsilk", "cyan", "white"),edges=30)
pie(pie.sales,col = c("purple", "violetred1", "green3", "cornsilk", "cyan", "white"),edges=1000)


Pour ce qui est du crade de l'image il te suffit de travailler dans une fenêtre plus petite, voir du côté de windows pour spécifier une taille de fenêtre.

Maxime

Abdel Zine
Messages : 75
Enregistré le : 28 Nov 2006, 09:56

Messagepar Abdel Zine » 25 Juin 2007, 13:31

Bonjour Maxime, merci pour le edges,
Logez Maxime a écrit :Pour ce qui est du crade de l'image il te suffit de travailler dans une fenêtre plus petite, voir du côté de windows pour spécifier une taille de fenêtre.
Le fait est que je fais appel à R à partir d'une application externe (java), en passant par Rserve, et je ne vois pas quelle serait la "fenêtre" dont tu parles ?
Sous RGui, la fenêtre dans laquelle les graphiques sont dessinés porte le nom "R Graphics : Device 2", c'est la taille de celle-ci qui est sauvegardée il me semble, alors est-ce possible de la redimentionner par une commande R ou par un autre moyen ?
Merci
Nul ne peut atteindre l'aube sans passer par le chemin de la nuit. Khalil Gibran.

Nicolas Péru
Messages : 1408
Enregistré le : 07 Aoû 2006, 08:13

Messagepar Nicolas Péru » 25 Juin 2007, 13:36

alors est-ce possible de la redimentionner par une commande R ou par un autre moyen ?


oui il faut regarder dans l'aide de par(). Ce n'est pas forcément très clair mais bon c'est là dedans. A la fin de l'aide sur cette fonction il ya toute une liste des paramètres utilisables dont le paramétrage de la taille de la fenêtre graphique.
D'ailleurs en ce qui concerne les paramètres graphiques il vaut mieux se "salir" un peu les mains en recherchant sinon on galère toujours autant car on ne se rappelle jamais lequel il faut utiliser lorsqu'on est guidé par quelqu'un.

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

Messagepar Logez Maxime » 25 Juin 2007, 13:36

Re,

C'est ce que je t'ai indiqué plus haut, avant de tracer tu ouvres une fenêtre dans laquelle va s'effectuer le graph, mais tu dimensionnes celle-ci comme il te convient :

Code : Tout sélectionner

pie(pie.sales,col = c("purple", "violetred1", "green3", "cornsilk", "cyan", "white"),edges=1000)
windows(3.5,3.5) # fenêtre de longueur et de largeur 1/2 par rapport à la taille par défaut
pie(pie.sales,col = c("purple", "violetred1", "green3", "cornsilk", "cyan", "white"),edges=1000)


Maxime

Abdel Zine
Messages : 75
Enregistré le : 28 Nov 2006, 09:56

Messagepar Abdel Zine » 25 Juin 2007, 14:56

Re,
Je n'avais pas compris que tu parlais de la "fonction" windows, merci pour l'astuce.
Je remarque qu'il y a toujours une marge entre le cadre de la fenêtre et son contenu à proprement parler, ce qui fait que si je veux obtenir une taille de dessin raisonnable, il faudra que la taille de la fenêtre (le cadre, avec windows(3.5, 3.5) ou autre) soit doublement proportionnelle à mon graphe, et ce pour un radius =1, pour un radius = 0.5, la taille de la fenêtre sera quatre fois plus grande que mon graphe.
voici ce que ça donne
(le petit graphique est dessiné avec un radius = 1.1, pour voir que ça déborde bien qu'il y ait de la "place" sur la fenêtre!)
En tout les cas, merci beaucoup pour ton aide Maxime
Nul ne peut atteindre l'aube sans passer par le chemin de la nuit. Khalil Gibran.

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

Messagepar Logez Maxime » 25 Juin 2007, 15:04

Re,

La marge se règle avec le paramètre mar de la fonction par, voir ?par. Essaie avec par(mar=rep(0.1,4))

Maxime

Abdel Zine
Messages : 75
Enregistré le : 28 Nov 2006, 09:56

Messagepar Abdel Zine » 25 Juin 2007, 16:07

oups, je m'excuse Nicolas, j'avais "loupé" ton message. Effectivement tu as raison, il faut chercher soi-même pour s'en rappeler, je suis bien d'accord avec toi, mais les indications des initiés sont d'un apport substantiel
Maxime, je vais voir ce que ça donne avec par(mar=rep(0.1,4)), merci de m'avoir dispensé de me salir les mains pour cette fois :P

======
Edit : les commandes suivantes

Code : Tout sélectionner

windows(3.6,2.5)
par(mar=c(0.1,2,0.1,2))
donnent ceci
Image

ce qui est parfait pour l'exemple en cours.
Merci.

Sincerèment,
Nul ne peut atteindre l'aube sans passer par le chemin de la nuit. Khalil Gibran.


Retourner vers « Questions en cours »

Qui est en ligne

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