Diagramme circulaire

Règles du forum
ATTENTION ! Il est demandé de ne déposer dans ce forum que des exemples
  • finalisés
  • que l'on pense intéressants et optimisés
  • et qui se rapportent au thème du forum.
Si certains exemples déposés donnent lieu à de nombreuses modifications, ils seront déplacés et remplacés par un nouveau sujet dans ce forum avec la ou les meilleures propositions.
Pour les demandes d'aide ... il y a un forum spécifique !

Diagramme circulaire

Message non lupar GM » Lun 22 Mar 2010, 14:05

Il faudra probablement un jour penser à créer une extension dédiée aux diagrammes statistiques mais en attendant, voilà un exemple de diagramme circulaire.

Figure asymptote 93937788d91a7495f4cfc6ccc9edb906
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1.  
  2. size(250,0);
  3. // Tableau des modalités
  4. string[] tabmod={"Modalit\'e 1","Modalit\'e 2","Modalit\'e 3",
  5. "Modalit\'e 4","Modalit\'e 5"};
  6. // Tableau des effectifs (ou fréquences)
  7. real[] tabeff={20,6,7,10,11};
  8. // Tableau des décalages éventuels des secteurs
  9. real[] tabdecsec={0,.1,0,.2,0};
  10. // Tableau des décalages éventuels des labels
  11. real[] tabdeclab={0,.5,.5,.2,.2};
  12. // Les deux couleurs utilisées pour composer
  13. // les couleurs des secteurs
  14. pen color1=green,color2=blue;
  15. // Le stylo pour les labels
  16. pen p3=blue,p4=yellow+white;
  17. ///////////////////////////////////////////////////////////////
  18. /// Ce qui suit n'est a priori pas à changer et pourrait être
  19. /// ajouté un de ces jours à une extension perso stats_gm.asy
  20. /// pour être remplacé par :
  21. /// diacirculaire(tabmod,tabeff,tabdec,color1,color2);
  22. ///////////////////////////////////////////////////////////////
  23. real[] tabangle,tabanglecumule,tabanglelabel;
  24. tabanglecumule[0]=0;
  25. int n=tabeff.length;
  26. for(int i=0; i<n; ++i) {
  27. tabangle[i]=tabeff[i]*360/sum(tabeff);
  28. tabanglecumule[i+1]=tabanglecumule[i]+tabangle[i];
  29. tabanglelabel[i]=tabanglecumule[i]+tabangle[i]/2;
  30. path secteur=(0,0)--arc((0,0),1,tabanglecumule[i],tabanglecumule[i+1])--cycle;
  31. transform t1=shift(tabdecsec[i]*dir(tabanglelabel[i])),
  32. t2=shift((.5+tabdecsec[i]+tabdeclab[i])*dir(tabanglelabel[i]));
  33. filldraw(t1*secteur,i/n*color1+(1-i/n)*color2+white);
  34. label(tabmod[i],t2*(0,0),p3,Fill(p4));
  35. }
  36.  
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://gmaths.net/asy/index/?filtre=arc triple
Avatar de l’utilisateur
GM
Administrateur du site
Administrateur du site
 
Messages: 628
Inscription: Dim 7 Mar 2010, 14:50

Re: Diagramme circulaire

Message non lupar GM » Lun 22 Mar 2010, 14:08

Le même script que précédemment avec de très petites modifications :

Figure asymptote 6fb88f4f84d88b1ffd839d90984075cb
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1.  
  2. size(250,0);
  3. // Tableau des modalités
  4. string[] tabmod={"Modalit\'e 1","Modalit\'e 2","Modalit\'e 3",
  5. "Modalit\'e 4","Modalit\'e 5"};
  6. // Tableau des effectifs (ou fréquences)
  7. real[] tabeff={20,6,7,10,11};
  8. // Tableau des décalages éventuels des secteurs
  9. real[] tabdecsec={0,0,.1,.5,0};
  10. // Tableau des décalages éventuels des labels
  11. real[] tabdeclab={0,.5,.5,.2,.5};
  12. // Les deux couleurs utilisées pour composer
  13. // les couleurs des secteurs
  14. pen color1=green,color2=red;
  15. // Le stylo pour les labels
  16. pen p3=blue,p4=yellow+white;
  17. ///////////////////////////////////////////////////////////////
  18. /// Ce qui suit n'est a priori pas à changer et pourrait être
  19. /// ajouté un de ces jours à une extension perso stats_gm.asy
  20. /// pour être remplacé par :
  21. /// diacirculaire(tabmod,tabeff,tabdec,color1,color2);
  22. ///////////////////////////////////////////////////////////////
  23. real[] tabangle,tabanglecumule,tabanglelabel;
  24. tabanglecumule[0]=0;
  25. int n=tabeff.length;
  26. for(int i=0; i<n; ++i) {
  27. tabangle[i]=tabeff[i]*360/sum(tabeff);
  28. tabanglecumule[i+1]=tabanglecumule[i]+tabangle[i];
  29. tabanglelabel[i]=tabanglecumule[i]+tabangle[i]/2;
  30. path secteur=(0,0)--arc((0,0),1,tabanglecumule[i],tabanglecumule[i+1])--cycle;
  31. transform t1=shift(tabdecsec[i]*dir(tabanglelabel[i])),
  32. t2=shift((.5+tabdecsec[i]+tabdeclab[i])*dir(tabanglelabel[i]));
  33. filldraw(t1*secteur,i/n*color1+(1-i/n)*color2+white);
  34. label(tabmod[i],t2*(0,0),p3,Fill(p4));
  35. }
  36.  
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://gmaths.net/asy/index/?filtre=arc triple
Avatar de l’utilisateur
GM
Administrateur du site
Administrateur du site
 
Messages: 628
Inscription: Dim 7 Mar 2010, 14:50

Re: Diagramme circulaire

Message non lupar GM » Lun 22 Mar 2010, 14:14

Et encore des variantes :

Figure asymptote 1616a1d07cbafc00c01dea93c5e91bf7
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1.  
  2. size(250,0);
  3. // Tableau des modalités
  4. string[] tabmod={"Modalit\'e 1","Modalit\'e 2","Modalit\'e 3",
  5. "Modalit\'e 4","Modalit\'e 5"};
  6. // Tableau des effectifs (ou fréquences)
  7. real[] tabeff={18,6,7,10,25};
  8. // Tableau des décalages éventuels des secteurs
  9. real[] tabdecsec={0,0,0,0,.4};
  10. // Tableau des décalages éventuels des labels
  11. real[] tabdeclab={0,.5,.5,.2,.5};
  12. // Les deux couleurs utilisées pour composer
  13. // les couleurs des secteurs
  14. pen color1=blue,color2=orange;
  15. // Le stylo pour les labels
  16. pen p3=red,p4=white;
  17. ///////////////////////////////////////////////////////////////
  18. /// Ce qui suit n'est a priori pas à changer et pourrait être
  19. /// ajouté un de ces jours à une extension perso stats_gm.asy
  20. /// pour être remplacé par :
  21. /// diacirculaire(tabmod,tabeff,tabdec,color1,color2);
  22. ///////////////////////////////////////////////////////////////
  23. real[] tabangle,tabanglecumule,tabanglelabel;
  24. tabanglecumule[0]=0;
  25. int n=tabeff.length;
  26. for(int i=0; i<n; ++i) {
  27. tabangle[i]=tabeff[i]*360/sum(tabeff);
  28. tabanglecumule[i+1]=tabanglecumule[i]+tabangle[i];
  29. tabanglelabel[i]=tabanglecumule[i]+tabangle[i]/2;
  30. path secteur=(0,0)--arc((0,0),1,tabanglecumule[i],tabanglecumule[i+1])--cycle;
  31. transform t1=shift(tabdecsec[i]*dir(tabanglelabel[i])),
  32. t2=shift((.5+tabdecsec[i]+tabdeclab[i])*dir(tabanglelabel[i]));
  33. filldraw(t1*secteur,i/n*color1+(1-i/n)*color2+white);
  34. label(tabmod[i],t2*(0,0),p3,Fill(p4));
  35. }
  36.  
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://gmaths.net/asy/index/?filtre=arc triple
Avatar de l’utilisateur
GM
Administrateur du site
Administrateur du site
 
Messages: 628
Inscription: Dim 7 Mar 2010, 14:50


Retourner vers Statistiques / Probabilités

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

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

cron