Page 1 sur 1

Diagramme circulaire et semi circumaire

MessagePublié: 13 Fév 2011 11:47
par Joffrey
Bonjour, je continue mes petites macros :

DiagCirc qui représente les valeurs en diagramme circulaire :
Code: Tout sélectionner
{DiagCirc = DiagCirc(valeur, centre rayon)}
$r:=%3, $centre:=%2,
$L:=%1,
$S:=sum(L),
$ColorList:=[purple, blue,  green,  yellow, orange,  red, crimson],
Langle:=[for $k in L do k*360/S od],
for $j from 1 to Nops(L)-1 do
    for $k from j+1 to Nops(L) do
        replace(Langle,k,Langle[k]+L[j]*360/S)
    od,
od,
Insert(Langle,0,1),
FillStyle:=full,
for k from 1 to Nops(Langle)-1 do
ColorAngle:=mod(k,7),
FillColor:=ColorList[ColorAngle],
Path([centre+r*exp(i*pi*Langle[k]/180), centre, centre+r*exp(i*pi*Langle[k+1]/180), r, arc,
      centre+r*exp(i*pi*Langle[k+1]/180), centre, centre+r*exp(i*pi*Langle[k]/180), line],1)
od,


Le code :
Code: Tout sélectionner
[
Fenetre(-3+5*i, 5-3*i, 1+i),
Axes(0,1+i),
DiagCirc([2,1,11,5],2+2*i,2),
]


donne
diagcirc.png
diagcirc.png (9.48 Kio) Consulté 41165 fois


et DiagSemiCirc qui représente les valeurs en diagramme circulaire :
Code: Tout sélectionner
[
{DiagSemiCirc = DiagSemiCirc(valeurs, centre, rayon}
$r:=%3, $centre:=%2,
$L:=%1,
$S:=sum(L),
$ColorList:=[purple, blue,  green,  yellow, orange,  red, crimson],
Langle:=[for $k in L do k*180/S od],
for $j from 1 to Nops(L)-1 do
    for $k from j+1 to Nops(L) do
        replace(Langle,k,Langle[k]+L[j]*180/S)
    od,
od,
Insert(Langle,0,1),
FillStyle:=full,
for k from 1 to Nops(Langle)-1 do
ColorAngle:=mod(k,7),
FillColor:=ColorList[ColorAngle],
Path([centre+r*exp(i*pi*Langle[k]/180), centre, centre+r*exp(i*pi*Langle[k+1]/180), r, arc,
      centre+r*exp(i*pi*Langle[k+1]/180), centre, centre+r*exp(i*pi*Langle[k]/180), line],0)
od
]


Le code :
Code: Tout sélectionner
[
Fenetre(-3+5*i, 5-3*i, 1+i),
Axes(0,1+i),
DiagSemiCirc([2,1,11,5],2+2*i,2),
]


donne
diagsemicirc.png
diagsemicirc.png (7.83 Kio) Consulté 41165 fois


Si ça peut servir à d'autres que moi.

Re: Diagramme circulaire et semi circumaire

MessagePublié: 13 Fév 2011 13:08
par projetmbc
Bonjour,
je voulais savoir si la présence des axes étaient volontaires.

Un truc délicat avec les diagrammes circulaires est l'ajout d'une légende. Il pourrait être pas mal d'avoir par exemple accès aux coordonnées des "milieux" des arcs de chaque "part de fromage". Ceci autoriserait une personnalisation pas trop violente des légendes.

Re: Diagramme circulaire et semi circumaire

MessagePublié: 13 Fév 2011 13:28
par Alphonse Capriani
Salut tout le monde, et salut Joffrey!!!

C'est génial : tu viens de relancer le fameux projet de fichier de statistiques sous TeXgraph. On espère maintenant que tes premiers pas vont faire décoller les choses.
Comme je l'avais dit précédemment (c'est pas mois d'ailleurs qui avait lancer l'idée? :lol:) de ce point de vue j'ai un tas d'idée des plus simples aux plus compliquées. Le soucis, c'est qu'en ce moment, j'ai pas trop le temps de m'y coller. Commencer par des diagrammes simples en 2 dimensions me semble une bonne idée quitte a "améliorer" ou étendre le fichier actuel au fur et a mesure.

Par contre, je suggère une certaine organisation pour pouvoir avancer sans que ca parte trop rapidement en "free style". Déja, pourquoi ne pas unifier les quelques macros que tu as proposer dans un même fichier "diagramme.mac" qui pourra ensuite être appeler ou copier dans un fichier plus conséquent "statistique.mac". Le fichier pourra contenir les diagramme précédement évoqués tels que les diagrammes en bâton, les boxplot ou encore tes diagrammes (semi)circulaires. Pour l'instant, les droites de régression peuvent aussi y être ajouté même si il ne s'agit pas forcément du même type de graphique.

Je pense aussi qu'il faut se faire une petite TODO-list sur les diagrammes fait ou à faire et pour chacun d'eux ce qu'il serait intéressant de faire (par exemple, l'ajout de légendes aux diagrammes circulaires comme le proposait notre ami projetmbc!) Je vais essayer de réfléchir un peu a une telle liste dans la journée...
Je pense aussi que ce serait bien de réutiliser la syntaxe usuelle drawDiagramme(<Arguments>, [paramètres graphiques optionnels]). Et puisque toute ces macros doivent finalement figurer dans un même fichier, essayer de réutiliser les variables globales utilisées pour les diagrammes déja créés lorsque l'on en crée un nouveau!!

Voila voila : pour les suggestions, c'est tout ce qui me viens a l'esprit... Je pense que je vais prendre un peu de temps pour participer (même si j'en ai pas beaucoup en ce moment) : Ca me donne envie de m'y remettre...

Re: Diagramme circulaire et semi circumaire

MessagePublié: 13 Fév 2011 13:36
par projetmbc
Bonjour Alphonse.

Alphonse Capriani a écrit:Le fichier pourra contenir les diagramme précédement évoqués tels que les diagrammes en bâton, les boxplot ou encore tes diagrammes (semi)circulaires. Pour l'instant, les droites de régression peuvent aussi y être ajouté même si il ne s'agit pas forcément du même type de graphique.

J'ajouterais (ah ce projetmbc toujours à proposer des choses) qu'il faudrait peut-être faire un fichier diagramme.mac, un autre regression.mac,... etc pour réunir les outils qui ont un point. Ceci permettra une maintenance plus simple, et ceci fournira aussi la possibilité d'utiliser des variables globales (pour par exemple passer facilement d'un diagramme plat pasteurisé à son équivalent 3D pour un monde avec des fromages qui ont du relief).

Re: Diagramme circulaire et semi circumaire

MessagePublié: 13 Fév 2011 13:37
par P.Fradin
Bonjour à tous,

J'abonde dans le sens d'Alphonse. Malheureusement je n'aurai pas beaucoup de temps moi non plus cette semaine, mais ça ira mieux dans 8 jours! Le mieux est effectivement d'ouvrir un sujet dans Proposition-Discussion, et pour les propositions de macros préférer la syntaxe drawMachin( données, [options] ).