version 6.0 (Modifiée)
Cette section propose des exemples pratiques de création de graphes à l'aide des commandes et fonctions de 4D Chart, à partir de tableaux.
Si vous souhaitez créer des graphes par programmation à partir des données des enregistrements de la base, reportez-vous à la section Créer des graphes à partir d'enregistrements (exemples).
Les exemples suivants donnent des exemples d'utilisation de la fonction ch_Tableaux vers graphe pour créer des graphes à deux et trois dimensions.
Pour chaque exemple, vous trouverez :
Une description de la situation prise comme exemple,
La structure de la base de données de l'exemple,
Un graphe créé par méthode avec des données de l'exemple,
Le code utilisé pour créer le graphe de l'exemple.
Créer un graphe à deux dimensions à partir de tableaux
Supposons que vous soyez le nouveau directeur de la Division Ingénierie d'une société qui fabrique des gadgets. En particulier, vous devez réduire le temps de réponse de vos départements aux demandes d'assistance clients.
Vous décidez de concevoir une base de données permettant de suivre le temps de réponse de chaque département. La structure de votre base de données est la suivante :
Pour analyser l'information recueillie, vous décidez de tracer le temps de réponse moyen ((Date de fin - Date de demande)/ Nb de réponses) pour chaque département et pour chaque mois de l'année écoulée. En utilisant 4D Chart, vous produisez le graphe suivant :
Ce graphe a été généré et formaté au moyen de la méthode GR REPONSE. Cette méthode remplit les tableaux avec des données, génère un graphe à partir des tableaux, puis en personnalise certains aspects tels que les titres des axes et les couleurs des séries.
La première partie de la méthode utilise les commandes et fonctions de 4e Dimension pour créer et remplir les tableaux. Vous saisissez les valeurs du tableau Catégories, le contenu du tableau Séries est tiré directement de la base de données, et le contenu du tableau Valeurs résulte de la manipulation des données. La taille du tableau Valeurs est égale à celle du tableau Catégories multipliée par celle du tableau Séries.
Cette méthode recourt à des ensembles pour manipuler la sélection des enregistrements. Après avoir créé un ensemble, vous pouvez modifier la sélection des enregistrements selon les besoins, en les recherchant, puis revenir à l'ensemble original d'enregistrements autant de fois que nécessaire. Dans cette méthode, un ensemble permet de maintenir la sélection des enregistrements pour tout le graphe. La sélection est modifiée pendant le remplissage du tableau Valeurs, parce que les valeurs sont déterminées par la sélection qui résulte de la recherche des enregistrements pour chaque département et pour chaque mois.
Une fois les tableaux remplis, les commandes 4D Chart sont utilisées pour créer le graphe et modifier ses caractéristiques. Voici le code de la méthode GR REPONSE :
`Méthode : GR REPONSE `Catégories : Mois de l'année, Séries : Noms des départements, Valeurs : Durée de tâche moyenne (jours) C_ENTIER LONG($x;$y;$z;$Compteur) C_ENTIER LONG($Gauche;$Haut;$Droite;$Bas) C_ENTIER LONG($Gauche2;$Haut2;$Droite2;$Bas2) C_ENTIER LONG($Zone;$Chart;$Titre;$Position;$Durée) `Définir et remplir le tableau Catégories TABLEAU ALPHA(3;$TabCat;12) $TabCat{1}:="Jan" $TabCat{2}:="Fév" $TabCat{3}:="Mar" $TabCat{4}:="Avr" $TabCat{5}:="Mai" $TabCat{6}:="Jun" $TabCat{7}:="Jul" $TabCat{8}:="Aoû" $TabCat{9}:="Sep" $TabCat{10}:="Oct" $TabCat{11}:="Nov" $TabCat{12}:="Déc" `Générer la sélection des enregistrements à représenter graphiquement CHERCHER PAR FORMULE([Demande];Annee de([Demande]DateDemande) =2004) `Stocker les enregistrements dans un ensemble pour utilisation ultérieure NOMMER ENSEMBLE([Demande];"sChartData") `Définir et remplir le tableau Séries avec les noms des départements TABLEAU ALPHA(20;$TabSerie;0) VALEURS DISTINCTES([Demande]Département;$TabSerie) `Déterminer le nombre de valeurs à tracer (Nombre de valeurs = nombre d'éléments * nombre de séries) `Etablir le tableau Valeurs TABLEAU REEL($TabValeur;12*Taille tableau($TabSerie)) `Remplir le tableau Valeurs `Pour chaque département, trouver la durée de tâche moyenne par mois $Compteur:=0 `Le compteur suit le nombre de valeurs Boucle ($x;1;Taille tableau($TabSerie)) `Boucler pour le nombre de départements Boucle ($y;1;12) `Boucler pour les 12 mois $Compteur:=$Compteur+1 `Pour chaque département, trouver ses enregistrements CHERCHER DANS SELECTION([Demande];[Demande]Département=$TabSerie{$x}) `Dans la sélection, trouver les enregistrements pour chaque mois CHERCHER PAR FORMULE DANS SELECTION([Demande];Mois de([Demande]Date Demande)=$y) Si (Enregistrements trouves([Demande])>0) $Durée:=0 `Reçoit les durées `Boucler dans les enregistrements et additionner les temps de réponse Boucle ($z;1;Enregistrements trouves([Demande])) ALLER DANS SELECTION([Demande];$z) $Durée:=$Durée+([Demande]DateFinTravaux-[Demande]DateDemande) Fin de boucle `Obtenir la durée moyenne et la placer dans le tableau $TabValeur $TabValeur{$Compteur}:=$Durée/Enregistrements trouves([Demande]) Fin de si `Restaurer la sélection originale des enregistrements UTILISER ENSEMBLE("sChartData") Fin de boucle Fin de boucle EFFACER ENSEMBLE("sChartData") `Effacer l'ensemble quand vous avez fini de l'utiliser `Ouvrir une fenêtre externe pour afficher le graphe $Zone:=Creer fenetre externe(2;40;550;400;8;"Mon graphe";"_4D Chart") `Créer un graphes en colonnes $Chart:=ch_Tableaux vers graphe ($Zone;2;2;$TabCat;$TabSerie;$TabValeur) `Ajouter les titres des axes des éléments et des valeurs ch_FIXER TITRE ($Zone;$Chart;2;2;3;"Temps de réponse en jours") ch_FIXER TITRE ($Zone;$Chart;0;3;0;"Mois de la demande") `Définir les couleurs des séries (Vert, Jaune, Bleu) ch_FIXER TRAMAGE GRAPHE ($Zone;$Chart;8;100;3;ch_Index vers couleur (10)) ch_FIXER TRAMAGE GRAPHE ($Zone;$Chart;8;200;3;ch_Index vers couleur (2)) ch_FIXER TRAMAGE GRAPHE ($Zone;$Chart;8;300;3;ch_Index vers couleur (7)) `Définir la position de la légende en haut au centre, orientation horizontale ch_FIXER ATTRIBUTS LEGENDE ($Zone;$Chart;1;0;0;0;7;0;0) `Ajouter un titre de graphe dans l'angle supérieur gauche $Titre:=ch_Creer texte ($Zone;1;1;275;3;"Temps moyen de réponse par département") `Formater le titre du graphe (Palatino, 14 points, Gras, Centré, Noir) ch_FIXER TEXTE ($Zone;$Titre;ch_Numero de police("Palatino");14; 1;ch_Index vers couleur(16);1) `Trouver les dimensions de la zone de graphe pour centrer les objets dans la fenêtre ch_LIMITES ZONE ($Zone;1;$Gauche;$Haut;$Droite;$Bas) `Centrer le graphe ch_LIRE LIMITES ($Zone;$Chart;$Gauche2;$Haut2;$Droite2;$Bas2) $Position:=(($Droite-$Gauche)-($Droite2-$Gauche2))/2 ch_DEPLACER ($Zone;$Chart;$Position;$Haut2) `Centrer le titre du graphe ch_LIRE LIMITES ($Zone;$Titre;$Gauche2;$Haut2;$Droite2;$Bas2) $Position:=(($Droite-$Gauche)-($Droite2-$Gauche2))/2 ch_DEPLACER ($Zone;$Titre;$Position;$Haut2) `Déplacer le graphe de 10 points vers le bas pour dégager de la place pour le titre ch_LIRE LIMITES ($Zone;$Chart;$Gauche;$Haut;$Droite;$Bas) ch_DEPLACER ($Zone;$Chart;$Gauche;$Haut+10)
Créer un graphe à trois dimensions à partir de tableaux
Supposons que, directeur d'un programme éducatif, vous souhaitiez savoir si les scores de test des élèves de votre région s'améliorent. Votre base de données contient les scores des élèves de votre région, avec indication de la date du test et du département.
Note : La base de données d'exemple est celle qui a été utilisée dans "Créer un graphe à deux dimensions avec les séries définies par les données contenues dans des enregistrements" (cf. section Créer des graphes à partir d'enregistrements (exemples)).
Comme il y a eu plusieurs dates de test chaque année, vous ne pouvez pas représenter les données directement à partir de la base de données.
Vous allez donc créer une méthode qui place les données dans des tableaux, afin de pouvoir utiliser chaque année en tant qu'éléments, et les départements en tant que séries.
Ce graphe a été généré au moyen de la méthode GRAPH 3D SCORES. Cette méthode remplit les tableaux avec des données, génère un graphe à partir des tableaux, puis en personnalise certains aspects.
Le contenu du tableau Catégories est saisi directement dans le code. Le contenu du tableau Séries est tiré de la base de données. Le contenu du tableau Valeurs est constitué par les moyennes des scores de tests de chaque département pour chaque année. La taille du tableau Valeurs est égale à celle du tableau Catégories multipliée par celle du tableau Séries.
En utilisant les commandes 4D Chart, on demande que la barre de menus 4D Chart, les barres de défilement, les règles, et les palettes d'outils soient cachées. La zone 4D Chart est définie comme "non-saisissable", c'est-à-dire que l'utilisateur ne peut y sélectionner aucun objet, ni la modifier.
Voici le code de la méthode GRAPH 3D SCORES :
`Méthode : GRAPH 3D SCORES `Catégories : Années de l'enquête, Séries : Départements, Valeurs : Scores C_ENTIER LONG($x;$y;$z;$Compteur) C_ENTIER LONG($Gauche;$Haut;$Droite;$Bas) C_ENTIER LONG($Gauche2;$Haut2;$Droite2;$Bas2) C_ENTIER LONG($Zone;$Chart;$Titre;$Position;$Score;$Couleur; $Police;$Rect) `Définir et remplir le tableau Eléments TABLEAU ALPHA(4;$TabCat;2) $TabCat{1}:="2003" $TabCat{2}:="2004" `Définir et remplir le tableau Séries avec les noms des départements TOUT SELECTIONNER([Scores]) TABLEAU ALPHA(2;$TabSerie;0) VALEURS DISTINCTES([Scores]Département;$TabSerie) `Etablir le tableau Valeurs (Nombre de valeurs à tracer = éléments * séries) TABLEAU REEL($TabValeur;2*Taille tableau($TabSerie)) `Déterminer et remplir le tableau Valeurs `Pour chaque département, trouver le score de test moyen $Compteur:=0 `Le compteur suit les valeurs Boucle ($x;1;Taille tableau($TabSerie)) `Boucler pour le nombre de départements Boucle ($y;1;2) `Boucler pour les 2 années $Compteur:=$Compteur+1 CHERCHER([Scores];[Scores]Département=$TabSerie{$x}) CHERCHER PAR FORMULE DANS SELECTION([Scores];Chaine(Annee de ([Scores]Date Test))=$TabCat{$y}) Si (Enregistrements trouves([Scores])>0) $Score:=0 `Maintient le total des scores `Boucler dans les enregistrements et additionner les scores Boucle ($z;1;Enregistrements trouves([Scores])) ALLER DANS SELECTION([Scores];$z) $Score:=$Score+[Scores]Score Fin de boucle `Calculer la moyenne des scores $TabValeur{$Compteur}:=$Score/Enregistrements trouves([Scores]) Fin de si Fin de boucle Fin de boucle `Ouvrir une fenêtre externe pour afficher le graphe $Zone:=Creer fenetre externe(2;40;500;350;4;"Mon graphe";"_4D Chart") `Cacher les éléments d'interface ch_FIXER AFFICHAGE ($Zone;1;0) `Cacher la barre de menus 4D Chart ch_FIXER AFFICHAGE ($Zone;2;0) `Cacher les outils graphiques ch_FIXER AFFICHAGE ($Zone;3;0) `Cacher les outils de tracé ch_FIXER AFFICHAGE ($Zone;6;0) `Cacher les barres de défilement ch_FIXER AFFICHAGE ($Zone;9;0) `Cacher les règles `Créer un graphe en colonnes 3D $Chart:=ch_Tableaux vers graphe ($Zone;100;2;$TabCat;$TabSerie;$TabValeur) `Montrer et cacher les titres des axes différents ch_FIXER TITRE ($Zone;$Chart;0;3;0;"Années des tests") ch_FIXER TITRE ($Zone;$Chart;1;1;0;"Départements") `Cacher le titre ch_FIXER TITRE ($Zone;$Chart;2;2;3;"Score moyen (en points)") `Définir la position de la légende en haut au centre, orientation horizontale ch_FIXER ATTRIBUTS LEGENDE ($Zone;$Chart;1;0;0;0;7;0;0) `Ajouter un titre de graphe dans l'angle supérieur gauche $Titre:=ch_Creer texte ($Zone;1;1;350;3;"Scores selon les états d'origine") `Formater le titre du graphe (Geneva, 14 points, Gras, Centré, Bleu) $Couleur:=ch_Index vers couleur (7) $Police:=ch_Numero de police ("Geneva") ch_FIXER TEXTE ($Zone;$Titre;$Police;14;1;$Couleur;1) `Obtenir les dimensions de la fenêtre pour le centrage ch_LIMITES ZONE ($Zone;1;$Gauche;$Haut;$Droite;$Bas) `Redimensionner le graphe à la taille de la fenêtre moins 50 points ch_MODIFIER TAILLE ($Zone;$Chart;$Droite-50;$Bas-50) `Centrer le graphe horizontalement ch_LIRE LIMITES ($Zone;$Chart;$Gauche2;$Haut2;$Droite2;$Bas2) $Position:=(($Droite-$Gauche)-($Droite2-$Gauche2))/2 ch_DEPLACER ($Zone;$Chart;$Position;$Haut2) `Centrer le titre horizontalement ch_LIRE LIMITES ($Zone;$Titre;$Gauche2;$Haut2;$Droite2;$Bas2) $Position:=(($Droite-$Gauche)-($Droite2-$Gauche2))/2 ch_DEPLACER ($Zone;$Titre;$Position;$Haut2) `Déplacer le graphe de 10 points vers le bas à partir du titre ch_LIRE LIMITES ($Zone;$Chart;$Gauche;$Haut;$Droite;$Bas) ch_DEPLACER ($Zone;$Chart;$Gauche;$Haut+10) `Encadrer le graphe et le titre d'un rectangle gris $Rect:=ch_Creer rectangle ($Zone;$Gauche-2;$Haut2-2;$Droite+2;$Bas+2+10;0) ch_FIXER TRAMAGE ($Zone;$Rect;3;ch_Index vers couleur (13)) `Centrer tous les objets verticalement ch_LIMITES ZONE ($Zone;1;$Gauche;$Haut;$Droite;$Bas) ch_LIRE LIMITES ($Zone;-1;$Gauche2;$Haut2;$Droite2;$Bas2) $Position:=(($Bas-$Haut)-($Bas2-$Haut2))/2 ch_DEPLACER ($Zone;-1;$Gauche2;$Position) `Envoyer le rectangle gris à l'arrière ch_SELECTIONNER ($Zone;-1;0) `Désélectionner tout ch_SELECTIONNER ($Zone;$Rect;1) `Sélectionner le rectangle ch_EXECUTER MENU ($Zone;24002) `Envoyer à l'arrière ch_SELECTIONNER ($Zone;-1;0) `Désélectionner tout `Rendre la zone non saisissable ch_VERROUILLER ($Zone;0)
Référence
Créer des graphes à partir d'enregistrements (exemples).