PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2024 → Problème de valeurs en abscisse sur un champ graph avec 2 types différents (aire et courbe)
Problème de valeurs en abscisse sur un champ graph avec 2 types différents (aire et courbe)
Iniciado por Fab, 22,mar. 2018 15:44 - 8 respuestas
Publicado el 22,marzo 2018 - 15:44
Bonjour,

Je dois faire un graphique qui situe, selon un âge, une courbe de poids réelle par rapport à des zones (aires) trop faible, dans la moyenne et trop haute.

J'ai donc un champ graph dont le descriptif est de type Aire, en abscisse (X) l'âge et en ordonnées (Y) le poids.
Mes aires sont générées à travers le descriptif du champ avec 4 séries dont la source est une colonne de table pour créer mes zones à 1 mois, 2 mois, 3 mois etc...
Là dessus pas de soucis ! Voir l'image ci-dessous :





Ensuite j'ajoute, sous forme de courbe avec points, l'évolution du poids réel et ceci par programmation mais dont la source est une colonne de table.
Mon problème est que les âges de cette courbe sont différents des aires : 7.5 mois, 8.3 mois, 9.2 mois, etc... mais à la génération de la courbe, les points se positionnent sur 7 mois, 8 mois, 9 mois...





Comment forcer le points de la courbe a être sur sa bonne abscisse (son âge précis) ?

Voici mon code :
// Série 5 :
// - source de la série
grSourceSérie(GRF_SansNom1,5,grColonneTable,"TABLE_SansNom1.COL_poids_animal")
// - type de la série
grTypeSérie(GRF_SansNom1, 5, grCourbe)
// - couleur
grCouleurSérie(GRF_SansNom1, 5, RVB(0, 95, 254))
grTypeTraitSérie(GRF_SansNom1,5,TraitContinu)
grTypePointSérie(GRF_SansNom1,5,grPointCercle)
// Dessin du graphe
grDessine(GRF_SansNom1)


Pour information, je suis en version WinDev 23.

D'avance merci pour votre aide précieuse ! :)
Miembro registrado
165 mensajes
Popularité : +12 (12 votes)
Publicado el 22,marzo 2018 - 22:48
Bonjour;

Je pense qu'il faut avoir les valeurs théoriques du tableau 2 et les inclure dans le tableau 1

Bon Dev.
Miembro registrado
4 mensajes
Publicado el 23,marzo 2018 - 10:41
Bonjour et merci pour votre réponse Fouedusa.

Malheureusement, même si on part d'un exemple plus simple à base d'un seul tableau pour générer 2 courbes :
Voir l'exemple ci-dessous :




Dans le code, les 2 courbes n'utilisent que les ordonnées du tableau.
Les abscisses sont en fait les indices des lignes du tableau.
Je ne sais pas comment dire, par programmation, à la courbe d'utiliser les colonnes abscisses pour générer mes courbes... :(

Voici mon code pour cet exemple :
// Série Courbe 1 :
// - source de la série
grSourceSérie(GRF_Test1,1,grColonneTable,"TABLE_Valeurs.COL_Ordonnee1")
grTypeSérie(GRF_Test1, 1, grCourbe)
grCouleurSérie(GRF_Test1, 1, RVB(0, 95, 254))
grTypeTraitSérie(GRF_Test1,1,TraitContinu)
grTypePointSérie(GRF_Test1,1,grPointCercle)

// Série Courbe 2 :
// - source de la série
grSourceSérie(GRF_Test1,2,grColonneTable,"TABLE_Valeurs.COL_Ordonnee2")
grTypeSérie(GRF_Test1, 2, grCourbe)
grCouleurSérie(GRF_Test1, 2, RVB(255, 0, 0))
grTypeTraitSérie(GRF_Test1,2,TraitContinu)
grTypePointSérie(GRF_Test1,2,grPointCercle)


grDessine(GRF_Test1)

CAS ERREUR:
Erreur(HErreurInfo())


Encore merci pour votre aide
Miembro registrado
204 mensajes
Popularité : +5 (5 votes)
Publicado el 23,marzo 2018 - 11:56
J'ai une solution non satisfaisante, vite fait :

il faut fusionner les deux tableaux pour les abscisses, et ne pas faire apparaître les points pour lesquels la valeur est nulle.

exemple :






Mais la courbe ne respecte pas les écartements entre les différentes valeurs d'abscisses.
Il faudrait pour cela créer autant de valeur d'abscisses que nécessaire en fonction de l'intervalle minimum entre deux valeurs.

exemple :
j'observe les âges de 0 à 9 ans inclus.
si ma précision est de 2 mois.
je dois donc créer 60 graduations en abscisses (10 tranches d'âge x 6 observations équidistantes par année).

Sinon on peut utiliser un diagramme xy mais je ne crois pas que cela trace les courbes. Mais peut-être cela te conviendrait en ayant un graphique mixte avec les aires (si c'est possible) ?

si tu trouves une solution, merci de la partager !
bon courage
christophe
Miembro registrado
4 mensajes
Publicado el 23,marzo 2018 - 16:03
Bonjour CV et merci pour votre réponse.

Mes abscisses sont espacés de la manière suivante : par exemple entre 1 et 2 mois : 1.0, 1.1, 1.2, 1.3, [...], 1.9, 2.0
Donc en suivant votre exemple sur mon deuxième test, j'obtiens ceci :




Je peux donc avoir mes abscisses comme je le souhaite mais impossible d'ignorer les 0... malgré le paramètres du champ graph :




Y'a-t-il un fonction en programmation pour que seuls les points non null soient reliés ?

D'avance merci pour votre aide.
Miembro registrado
204 mensajes
Popularité : +5 (5 votes)
Publicado el 23,marzo 2018 - 17:33
A part les paramètres du champ graph, je ne vois pas.
Au passage, il y a deux fois ce paramètre : dans l'onglet série, courbe par courbe, et dans l'onglet général

J'ai reproduit le pb sur webdev 23 avec une ou deux courbes, dans les deux cas, l'option ne produit pas l'effet désiré. Je n'ai pas essayé en windev23.
Il faudrait remonter le sujet au ST.
Mensaje modificado, 23,marzo 2018 - 17:35
Miembro registrado
204 mensajes
Popularité : +5 (5 votes)
Publicado el 23,marzo 2018 - 19:49
En relisant les nouveautés 23, je retombe sur la nouveauté 080 qui semble répondre à la question. Mais je ne sais pas mettre en oeuvre. Si qq a la solution...
Miembro registrado
4 mensajes
Publicado el 26,marzo 2018 - 09:12
:( Du coup j'ai envoyé la requête au ST pour les valeurs nulles qui s'affichent malgré l'option Ignorées.

Par contre si quelqu'un a une solution plus simple pour générer des courbes avec leurs véritables abscisses et non l'index de la ligne où se trouve l'ordonnée je suis preneur. ;)

Merci à vous
Miembro registrado
4 mensajes
Publicado el 26,marzo 2018 - 14:48
Pour information, "Dessin des valeurs nulles" ne traite que les cellules vides ! Et là, la courbe ignore bien ces cellules mais dans le cas d'une valeur à 0, ce n'est pas ignoré.

Une partie de solutionnée mais reste toujours à savoir s'il existe un moyen simple (c'est le but de Windev) de créer 2 courbes avec des abscisses différentes sur un même graph... ;)